A couple of comments before posting the solution, I would consider using instead URL Rewrite for this, that way you can continue to name your pages .ASPX physically and just rewrite the URLs from HTML to be ASPX, this way editors, etc, just work as expected.
Now, to map a different extension I wrote a blog on how to do it, but I figure I would post the entire solution here while explaining the different pieces.
1) The solution depends if your apppool is running Integrated mode or classic. For integrated you do it by adding a handler in the system.webServer/handlers section, for classic you need to add the same aspnet_isapifilter as before but also need to add in system.web/httpHandlers. With both you need to add a compilation build provider so that asp.net understands them. So here it is the web.config that you can drop in the same directory as your application to make it work.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="ASPX-HTML-Integrated" path="*.htm" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
<add name="ASPX-HTML-2.0-Classic-32bit" path="*.htm" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
</handlers>
</system.webServer>
<system.web>
<compilation>
<buildProviders>
<add extension=".htm" type="System.Web.Compilation.PageBuildProvider" />
</buildProviders>
</compilation>
<httpHandlers>
<add path="*.htm" type="System.Web.UI.PageHandlerFactory" verb="*" />
</httpHandlers>
</system.web>
</configuration>
finally here is the blog that explains more about it and shows command line tool to enable this:
http://blogs.msdn.com/carlosag/archive/2008/07/04/MappingFileExtensionForAspxPagesInIIS70.aspx