So far I see a HUGE majority of hosts provide only Linux shared hosting, providing Windows only to VPS (or even to only dedicated servers). Why is it so? While Windows is a lot more expensive than Linux (though it depends on a lot of factors, not just initial and support license cost), it also provides ASP.NET, IIS and of course, Microsoft SQL Server. I know in the past it might have been because of cPanel being Linux only but now they have a Windows version.
But still, why is Linux predominantly used on shared hosting? PHP works on both systems. IIS can be (and probably is) faster. MySQL runs on both systems as well. cPanel has a Windows version. Python, Perl, Ruby, all run on Windows as well. You even have MS SQL Server Express, which I find more superior than MySQL in both speed and features. Access is there for low usage requirements, as is SQLite (which is so great for quick small stuff). And with PowerShell you have a good alternative to the Unix shell.
EDIT: I am looking for common reasons, I realize each hosting company (and/or it's clients) may have different needs. This becomes very important when you get to VPS or Cloud which give you a full operating system to use.
Having worked within hosting companies that provide both Windows and Linux shared hosting platforms it is a combination of cost analysis. As mentioned the licensing costs on Windows is expensive when compared to Linux. As well the Windows servers to provide a stable hosting platform require much more resources than to run a similarly stable Linux platform. Usually required about 4x as much RAM alone to provide the same levels. Even with running Windows "core" there are limits to some of the features that can be hosted so you still can't get away with running just "core" if you want things like .NET and ASP. Another big factor is the fact that you don't have to reboot your Linux servers every "patch Tuesday" as you do with Windows.
In the end it is generally cheaper and more cost effective to run Linux hosting servers than Windows and that makes a big difference. As mentioned the biggest draw for Windows hosting are those needing to interoperate with other MS products and those that require that are willing to pay larger account fees to have that. If you look at most hosting providers you'll find they offer some form of webmail or simple IMAP/POP for email instead of Microsoft Exchange, this is also due to the licensing costs Microsoft racks up if you use it.
Four things jump immediately to mind: cost, admin, demand, support.
Cost: Not providing Windows means not having to have Windows licenses.
Admin: Even if you pass on the full cost of the Windows licenses (or even manage to make a small profit on getting some sort of full site license and renting that out enough to make the money back and more) the host has the hassle of ensuring that all the copies of Windows it is responsible for are correcly licensed (i.e. they've not sold more than they have bought).
Demand: A lot of people want Linux on their servers for a selection of reasons, or don't care either way in OS terms but find Windows plans more expensive or (in the case of people looking for cheap low-spec VMs to run very simple services on) less demanding in terms of system resources, particularly RAM and disk space (Windows 2008 "core" goes some way to redressing this difference, but you can still squeeze a functional Linux install into much less space). In large numbers you can get Windows licensing down to "very little per machine/VM", but if a host does not rent out enough Windows licenses then they can't do this so either have to eat the extra cost or pass it on the their clients.
Support: The host may specialise in one OS and not others simply due to the range of expertise they have access to for support purposes. This makes a lot less difference if they are offering only completely unmanages services, but is probably still a common consideration.
As you suggest in your question, the relative weight of these reasons (and others) will vary from host to host depending on their size, target market, and areas of expertise.
The question is backwards, and you provided the main reason in your question. Successful companies provide what their clients want so the real question is why do clients prefer Linux over Windows. If the demand (revenue for hosting companies) for Windows exceeded the demand for Linux then we would see more hosting companies focused on Windows. Since, as you point out, that is not the case it must be that clients demand Linux more than Windows.
So, why do clients generally prefer Linux over Windows for web dev setups:
There are several statements in your question that are very debatable so without arguing the pros and cons I'll just say that there some very strong arguments for MySQL, Apache, PHP to be at least as good as SQL Express, IIS and ASP in many common situations. If 2 solutions work equally well and one is significantly less expensive then it will see much greater implementation, always.
The fact that you mention Access as appropriate for anything is interesting, I think there is a small minority of people who would agree with that statement.
I'll give a word of warning that I'm not too familiar with windows in server environments, so take those biases in account.
Linux is standard. Apache was one of the reasons linux became popular on a server environment. Businesses tend to default to the option everyone else uses, regardless if it's the best or not.
Windows has a tarnished name. Just look at the desktop-variants for that perspective. Even IIS had a problematic history.
There's also something un-nerving that Microsoft's PR campaigns. See press of about godaddy to what linux.com says? Sure both sites have obvious biases, but who do you trust: someone who's trying to sell you something, or someone who is fanatical about something (both have flaws).
The ease of a GUI is great for desktop use, but most of the time servers are set up in some automated fashion. Having a GUI interface simply consumes extra system resources.
Updates. Most updates provided on linux environments can be automated to backup & update. Most updates don't require reboots. Although I definitely could be wrong on this part.
Lock-in. It's a nice feeling to know when your not reliant on a company to implement features into a language (ASP.net). At least for me. Mono is a noble project, but it'll always be behind the standard implementation from Microsoft. This also applies to Windows. If some freak security flaw occurs, who can fix it? What if it won't be fixed. Being already on a POSIX-like environment allows for quicker transitions into BSD, for example.
While Perl, Ruby, Python, etc. work on windows, but they're originally developed on posix environments. I'm not sure how most compare, but Ruby still runs faster on linux that windows.
For shared hosting environments, it's all about the cheap, not about the fastest.
These are the arguments I've come across as the most common for not using windows. It's mostly because of people's sterotypes.
This question is an invitation to explore the intersection of business and technical considerations in a particular business market (web service hosting).
The choice of offerings (OS being the primary determinant here) is fundamentally one maximizing ROI. How much does it cost for you to create an offering (capital outlay), and to provide and maintain it (unit and overhead)? How much can you charge for it? What's the market size (how many customers do you estimate are willing to pay your price)?
You only mention two offerings: MS Windows and Linux. That's almost the total market ... there are sliver thin niches offering FreeBSD, Solaris, MacOS X, etc.
As you point out most of the available vendors offer Linux and do so at a considerable discount over the available MS Windows offerings. Obviously Linux is free (no per unit capital expenditure for software licensing). Linux has become widely known among technical professionals (development and support staff are reasonably easy to find). Linux, in any competent configuration, can run with considerably less hardware overhead (further lowering capital overhead, since you have a higher capacity on comparable hardware).
Furthermore there's a huge market for Linux servers (VPS or co-located). Many popular applications (Apache and many modules, PHP, MySQL, and quite a few wiki, blog, and other offerings are readily available for it.
MS Windows is more expensive in every regard. Initial capital outlay is significantly higher since you have to create your own "dashboard" and "provisioning panel" applications ("cPanel" for Linux is commercial ... but widely understood and reasonably priced, for example; GNUpanel exists as an alternative, though I don't whether it's mature enough for most businesses). Unit costs entail licensing fees to Microsoft. Maintenance costs are higher (Linux admins tend to be marginally more expensive, but the most recent credible study I've seen suggests that reasonably competent Linux/UNIX admin can manage about four times as many servers as a comparably experienced MS Windows counterpart).
On top of that the size of the market seems to be much smaller. There are fewer customers (mostly because your offering price must be higher for the aforementioned reasons). Yes there are some ... there are developers and applications which are only supported under MS Windows based systems. There are some customers who are willing to pay a premium for MS Windows based hosting.
Mostly, however, the market is dominated by price. The number one factor for most of these hosting sites is which can offer the lowest price for an acceptable level of performance and reliability. (A few reasons why price is takes priority for so many customers: it's the one unambiguously quantifiable objective criteria they can readily find; too many vagaries affect power and 'net reliability and there isn't a widely recognized objective comparison of the other factors).
Certainly Microsoft has struggled to increase their penetration into this market. However, they have yet to find a way to gain more ground in this particular market. I've heard that they paid a number of domain hosting providers to use IIS on "parked" domains (in an effort to skew the Netcraft statistics). However, most of their efforts seem to have been focused on expanding their lock-in in the development tools chain (offering the IDEs that more developers want to use, thus locking them into .NET) and trying (in vain) to lure hardware vendors into new forms of lock-in (like the abortive "legacy-free" PC99 spec. they tried long ago, and variations on the "trusted computing platform" and so on).
Honestly I can't think of a combination that would really help them. They could offer a "free" (no-cost) starter edition just for hosting/co-lo providers of their platform and tools set ... and try to sell up from there. They could couple this with a client package (basically a buffed up Frontpage). They could offer a cPanel package to the providers for free (initial cost) and perhaps even some commission on any upsell garnered through that provider's offering. I don't know if those would be compelling enough to compete with free (libre).
(Personally it wouldn't work for me; but it might appeal to enough of a segment to be statistically significant).
i have never seen shared hosting done right on windows. maybe it's possible; but it would be hard to give each user enough control while still keeping them reasonably independent.
Unix-like systems, and apache in particular, on the other hand were pretty much designed around the assumption that different users will be each trying to get the most of the machine and it's the platform's task to serve them equally well.
Eng: Because with linux comes FREE software, more security (windows shared hosting had no way to prevent one user from reading another users files), windows is expensive if you have many servers, and cpanel for windows isn't around for a long time it's a little new.