Rafa and I had a little mail thread and we figured out what's going on.
1) It seems that Rafa still had an old ISAPI filter entry from a pre-release version of ASP.NET 2.0 in IIS. I asked Rafa to remove the first ISAPI filter entry (ASP.NET_2.0.50727.210) from applicationhost.config.
Yo<isapiFilters>
<filter name="ASP.NET_2.0.50727.210" path="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" preCondition="" />
<filter name="ASP.NET_2.0.50727.0" path="C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_filter.dll" enableCache="true" />
</isapiFilters>
2) Our upgrade code seems to have a bug. It doesn't notice that the binding *:80: is the same as :80:. When IIS tries to start the site it sees that the bindings conflict and stops the web-site:
2) <binding protocol="http" bindingInformation=":80:" />
<binding protocol="https" bindingInformation=":443:" />
<binding protocol="http" bindingInformation="*:80:" />
When Rafa removed the *:80: binding from his applicationhost.config file things magically started to work :). He had to restart IIS though.
Hope this helps the people who have the same problem.