It's the usability barrier. Windows was designed for idiots - the Help and Support center is proof of this. Linux, though usable once configured, requires a much more sophisticated approach. I recently started using Ubuntu, and the first things I learnt (after the installation) were how to use the terminal and sudo to modify a .conf file. That was just so that my installation could resolve the hostnames of Windows computers. I did it relatively easily, but requiring that level of proficiency is going to limit your market.
This is, of course, exacerbated by the fact that most software in use is written for Windows only, meaning that there would be substantial costs involved in moving to a new system in terms of training, conversion, etc. There's also the issue of perceived value - if Red Hat sold businesses copies of Linux at the same cost as Microsoft sells Windows, then the they might actually get considered. (Note that they don't necessarily have to change the licensing - it can continue to be free, but they are offering to sell it to them)