Maturity is the driving factor. Linux has a lot of immature attempts at a desktop. OS X has one but not a lot of time or manpower spent perfecting it (XCode sucks, Core APIs are weak/incomplete, OS support lacking for fundamentals).
Windows is nothing but mature. Billions of hours running, automated bug reporting, millions of developers, nth generation tools.
When something doesn't work or works badly on Linux, the critics always say it's Linux fault (just read the comments here). Hold Windows and OS X to the same standard and you'll see they aren't so wonderful in comparison.
Windows isn't a closed hardware platform like OS X, so driver support can be difficult (Windows update helps a lot on that).
Also, are you overclocking? Using a 4-year-old motherboard? There has to be some reason for BSOD - it's not a normal condition. Not making excuses, hundreds of millions of machines run for years without doing it.
In the early days, say, Windows 95, it did BSOD a lot for seemingly random reasons.
Nowadays, with the experience of handling dozens of Windows machines both server and client, I can tell you with a high degree of confidence that BSODs happen only when hardware is dying or a driver is buggy. The flavors I can confirm this for go from XP SP3 to Server 2008, passing through Server 2003, Vista and 7.
Windows is nothing but mature. Billions of hours running, automated bug reporting, millions of developers, nth generation tools.