Interesting, <modules> is in Intellisense for me with .NET 3.5....
For IIS 7, you should register HttpModules in two places:
<system.web>
<httpModules>
<add name="MyModule" type="Namespace.Class" />
</httpModules>
</system.web>
And here:
<system.webServer>
<modules>
<add name="MyModule" type="Namespace.Class" />
</modules>
</system.webServer>
You might also want to add preCondition="managedHandler" to the second instance, if your code is intended only for aspx files and not for static files too.
The different registrations have to do with things like Cassini and Classic vs. Integrated mode in IIS 7. You can always set a breakpoint to make sure your code is actually running.