I'd leave Accept: as is and let the browsers put in whatever is most
likely (text/html, image/gif, imager/jpeg). 90% of time that is all (or more)
than the server needed to know. Then stuff in an "Accept-URL:" with a
URL that gives the full story on just what the browser can handle.
That URL could point to some highly accessible site, but I'd certainly
rather not have my brower go weird if mother Netscape/Spyglass/Microsoft/etc
is unavailable. A pretty reliable "site" would be the browser itself.
It would keep a port open listening for HTTP Accept: extension requests.
To avoid caching problems you'd want URLs with the browser version in them.
Most browsers would have two paths, one for what it can do at the top level
and one for what image formats can be inlined. Firewalls might be a problem
and you may be tempted to extend the protocol (e.g., have the server send
a query that says "OK browser, pick one of the above types"), but the
basic idea needn't change.
At least with such a scheme there'd be few if any technical arguments to
avoid content-type negotiation and it would handle the common case with
little overhead. Those who really care could cache or whatever to make
it run smoothly. At the worst they could start peeking at the browser
version in the given URL which could be slightly more regular than
User-agent:.