On what environment are you running this site? Your development computer?
Could you possibly add some code to the session end handler in the app to write a record to a database do you can verify that the session is ending and that it's not something else.
I have had various problems with ASP.NET session over the years. I remember early on that the ASP.NET process would automatically recycle itself every so often. This resulted in strange session behavior similar to what you are experiencing. I haven't had this problem more recently as I haven't relied on session as much, or I have to switched to using SQL server session state which seems to be much less susceptible (if not impervious to) this weird behavior because the data is in a much more persistent medium. Even if the web app recycles itself, the client session cookie is still there and the data is still present within SQL.