Actually, one could argue that IIS and Apache don't really compete, except in the 'small' field of static web page serving and CGI (Common Gateway Interface, a way to get external processes to serve pages). I suspect this is where the hosting providers excel, and why they tend to choose Apache - it serves static pages reasonably quickly at very low cost.
Apache offers mainly simple dynamic page technology - mod_perl, PHP, etc, that can be obtained at low cost or for free, catering to the more amateur web developer. Microsoft offers scalable dynamic page technology - ASP with VBScript and JScript, ASP.NET with C# and VB.NET. Finally, you've got Java-based application servers, but these appear to actually have a very low market share.
Of course, you can go outside these boundaries - Apache does offer mod_asp, and some suggest an ASP.NET module too (though you're limited to Windows in this case). Likewise, ActiveState offer a Perl Active Script Engine, so you can write ASP pages for IIS in Perl (not quite the same as mod_perl, though). But these are far less common.
CGI is rarely considered for a new project, because the overhead of spawning a new process for every request is huge; the system simply wouldn't scale. Almost any other technology is simpler. For a University group project, I wrote a CGI-based system in Ada, because writing in Ada was required. I don't think there's any web server plug-in that allows writing pages in Ada (although it might be possible with a CLR-based Ada implementation, I wouldn't like to try it).
I assume that large companies require a strong data-backed dynamic website, probably including a content management system, and for that requirement IIS probably is superior.