I used to be a Linux zealot. Heck, I was even involved in trying to prove that we could roll out a Linux desktop across about 30,000 clients in 2005. Short answer - we couldn't.
Long answer:
1) Yes, windows is pretty infested with crap, but in a corporate environment, that isn't really a big deal. Corporate AV works, and "tits'nviruses.com" is blocked at the firewall anyway. I'm not underestimating the scale of the problem, but it is a solved problem.
2) So how about rolling Linux out for the "kiosk users". Browser based apps, simple. Oh, pants, ActiveX. So you look at emulation solutions (because your apps vendor sure as hell isn't going to change)....and yes you can just about do it, but it is (very) flaky and you can kiss goodbye to any support.
3) OK, office users. OO is well cool isn't it, and it even does PDFs. Whoo hoo. Oh dear, compatability. 90% of the time, it's fine. 10%, it screws up, badly. Going from Office -> OO -> Office is particularly problematic. With this, you're buggered. Most of the world uses MS-Office, and if you can't send them a Powerpoint and expect it to work, then it's over. Bleating "we haven't implemented that feature" doesn't cut any ice with the Marketing boys when their latest campaign turns into a mess.
4) Macros. Like it or not, many corporates are run with VB excel macros. OO doesn't do this, so it is useless to the finance department. Whether they should be doing this is the subject of another thread, but they do.
5) Calendaring. Really robust multi timezone, multi server, multi entity calendaring. Outlook does it really well. Ximian was a pile of poo in 2005, and that was the front runner.
So, out of our target 30K desktops, we might be able to convert a few thousand. We'd be saving, er, bugger all, as the cost of a site license for 28K users isn't a lot different for one for 30K users. Then you've got to develop and test the thing, you've got to make rollout industrial (just like Windows), then you've got to do the rollout. Then you've got to pander to every muppet who "needs" to go on a 2 day course to learn how to drive it. The sums didn't add up at all.
So that's why corporates don't switch, and until they do, Linux will always be niche, with poor hardware support and "challenging" set up.
Don't get me wrong, I'm not keen on letting anything from Microsoft in my data centres. Too hard to manage, to few enterprise features, too complicated, too many servers, too much power. For custom code its fine - but for some hacked up package, it is a pain. Of course, in the data centre, you pitch Linux against some rather better competition, and it still doesn't add up for me.
Home server - yep, Linux. Nice little box, runs network services and samba very well, good use of an old box.