c'è un bug nello script che hai postato

Sub Session_OnEnd

Application.Lock
Application("Users") = Replace( Application("Users") , Session("utente") & "," ,"")
'quando scade una sessione viene eliminato il nome dell'utente dalla variabile di
'applicazione che contiene l'elenco degli utenti attivi
Application.UnLock

End Sub
vedi, se un utente non fa il login, il suo username non compare nella lista, tuttavia viene lo stesso eseguita l'eliminazione dell'user dalla stringa.
siccome session("utente) non contiene nulla, in quanto non c'è stato il login viene eliminata solo la virgola, provocando un casino.
es.

prima dell'accesso dell'utente che non si logga

application("users") contiene:
digitm,tia86

quando scade la sessione diventa
digitmtia86

per rimediare a questo crea al login una sessione ad es. session("login") ed impostala a true quando fa il login e modifica lo script in :

codice:
Sun Session_OnStart
session("login") = false

end sub


Sub Session_OnEnd 

if session("login") then

Application.Lock 
Application("Users") = Replace( Application("Users") , Session("utente") & "," ,"") 
'quando scade una sessione viene eliminato il nome dell'utente dalla variabile di 
'applicazione che contiene l'elenco degli utenti attivi 
Application.UnLock 

end if

End Sub