What also prevents problems, is simply buying hardware that works fine with Linux. Instead of trying it on some random machine not (initially) purchased for that purpose.
I'm pretty sick and tired of hearing this counter-argument to my "problems." The majority of hardware I've ever bought has worked "out of the box" with Windows and Mac, I'm talking older scanners, brand new graphics cards, keyboards, mice, etc. The few that didn't immediately, were either solved in Windows by "automatic driver download", or by going to the vendor's website or using the provided disc (last ditch resort). I've never actually come across hardware that:
a. didn't work, or
b. required me to screw around with source code, and re-compile a kernel
And, you appear to be speaking to me as if I don't know how to use Linux. I do, I've been programming for the last 20 years and working with all 3 platforms (Mac, Windows, Linux). I respect Linux, but at some point the community, including Slashdot, has to admit that my experience is fairly common (even if you anecdotally haven't had it) and you can't expect 'regular' people to want to deal with this. I'm in the tech field and even I don't want to deal with this! Why? I have a family, my time is valuable, and while I can screw around for ours with my OS, I don't want to. Make it "work" without having to screw around, or at least admit there's a problem, and then we can start to get somewhere.