You can use global.asax’s session end event to remove the unexpectedly disconnected user :
void Session_End(Object sender, EventArgs E) {
// Clean up session resources
}
but beware, session doesn’t end when the user closes his browser or his connection lost. It ends when the session timeout reached.