Check out Billy McCafferty's article at
http://www.codeproject.com/aspnet/NHibernateBestPractices.asp. A best practice for using NHibernate with ASP.NET apps is called 'session-per-request', where each HttpRequest would have one session and all activity done during that time would be subject to what is called 'transparent-write-behind'...What this means is that edits done on entities during the session (Request) are synched to the DB when the Session is flushed at the end of the HttpRequest.
THis is transactionally sound since you aren't hitting the DB multiple times with all the user actions. Check out Hibernate in Action for details of this as well.
I use something similar using IoC but isn't less tied to an HttpModule.