The problem here is your definition of free. ASP.NET is free in the sense of Buy one, get one free. But it’s not free in the sense of Free beer – whoohoo! Reminds me of a sketch I saw on TV of a guy in a convenience store opening a bunch of packets and eating one item. When asked what he was doing he said "I’m only taking the free ones!"
As far as real world hosting goes ASP.NET is only free if you buy a Windows Server product. In the same way SQL Server Express is free, but it has a 1 CPU, 1GB memory limitation. Big shared hosting providers usually use Quad CPU 8Gb+ machines which Express edition fails to make use of, so they need to buy Standard or Enterprise. And because you are using it for web development this means purchasing a per CPU license which can be astronomical.
The same is true of the development tools. Firstly, you can develop ASP.NET applications in Notepad if you want to. Or gEdit or Coda or whatever. For sure, this is free. But would you want to? I doubt it.
The problem with ASP.NET is that in order to get anything useful done you pretty much need the development GUI. I have to admit Visual Web Developer is a great product and probably one of the best IDEs available. Again it’s only free if you buy Windows – not exactly friendly to the web design & development community that largely use Macs.
But to develop in PHP I don’t need a fancy IDE. Sure PHP doesn’t do a whole bunch of stuff that ASP.NET does – I wish PHP came with something like ASP.NETs GridView for example. But PHP makes up for it with the wealth of already existing, free, open source software such as WordPress, phpBB, osCommerce, MediaWiki, etc…
I don’t wish to put anyone off ASP.NET I think it’s a great technology (even though it is proprietory). I don’t think it will ever take off in mainstream web development however, it’s more of a niche thing.
TLDR? Short version…
When i’m developing a line-of-business application for use on a company intranet (and that company is a Microsoft shop) I’m usually using ASP.NET.
When I’m developing for the internet I develop in PHP.