for hardware support you target getting your driver in the kernel.org kernel. all the distros pull from that (and most of the backport drivers)
as far as developing closed source apps for linux, this is not as hard as you make it out to be.
you don't need to target a specific desktop environment during development unless you _really_ are worried about making the look-and-feel match the desktop (and if you are doing that you need to support skins/themes anyway) look at freedesktop.org for how to do things in a desktop agnostic way.
I agree that when it gets to final compiling and testing of the application it's more work to test with the different distros. but in most of the time the problem is more in packaging dependancies than actually needing different binaries (you can get unlucky with one distro updating a library in a way that's not backwards compatible, but this is uncommon)
if your entire QA effort is manual then this can be backbreaking, but if you have automated testing of your application (which is becoming more and more a requirement anyway), then adding additional platforms to test on is relativly cheap.
it is different than latest-version-of-windows-only development, but nowdays even windows development requires testing on multiple platforms (XP Vista, 7 at minimum)