periodicamente, magari ad ogni caricamento di pagina, lanci una delete di questo tipo

DELETE FROM userOnline WHERE (ultimoAccesso - NOW()) > 20*60

se ultimoAccesso è una timestamp