I think you used the best method. instead of that you can use
Session.Clear()
Session.RemoveAll()
those are clear the session but keep session in memory in live.
if you are using inproc mode to store the session (not the sql server or state server ) globle.asax file session_end() event will fire when ever called
session.abandone().
or time out of the session . if you want to expire session automatically after some time you can use
<system.web><sessionState mode="InProc" timeout="20"></sessionState>
</system.web>
where time out in mints.