-every browser does it just a little bit differently
+Ever heard of a little thing we like to call 'Standards'? Try coding to them. It helps.
-new browser releases will often break your code
+ see above.
-browser makers will not tell you all the details of how their version differs
+ This is a somewhat valid concern, but 99% of the time, if you code to the standards, you have no problems.
-you will have to test it on every OS/browser combo you intend to support
+Where does it read that you are supposed to support old, crappy prehistoric browsers, especially at the expense of added usability and customization for the newer customers? This is like saying "Well, some people have old cars that can barely make 50, so the speed limit for this highway can't be any higher then 50".
-even if you get everything right, your pages will sometimes fail for certain users with no apparent reason
+See above about standards, etc.
You do realize that almost every reason you listed above could be applied to something like openGL? New OS's will break code, Everything is different, etc. But people work around this. They write standard libraries to over come these things.