As far as it goes, that's a perfectly reasonable way of doing it, however I would counsel you to forget about trying to detect whether a browser explicity states it will accept XHTML as some (such as IE) don't advertised themselves as accepting 'application/xhtml+xml' will display XHTML if sent with an text/html content-type but don't display it properly if sent with the 'application/xhtml+xml' type. On the other hand there are others (such as galeon) that do advertise the xhtml content-type but do not display it correctly (in the absence of a stylesheet).
This really goes back to the old browser detecting thing, which was similarly a bad idea. Produce your output to the standard and test with as many browsers as you can, b ut don't try making different output for them as you will never be able to keep up.
/J\