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.
And yet it still BSODs on me too often to be actually usable.