Non so se ho capito bene. Tu hai un applicazione locale (non web) e vuoi simulare un sistema di sessioni analogo alle applicazioni web. Quindi ti sei costruito una classe Session. L'utente arriva alla schermata di login, effettua il login, il codice istanzia un Session, il Session interroga il database e se il login e' corretto, lo stesso si salva da qualche parte (immagino in una struttura dati tipo HashMap per poterlo recuperare rapidamente). Tu vorresti che, se il login e' sbagliato, questo oggetto non venisse inserito nella struttura dati che salva le sessioni, giusto?
Io procederei cosi':
Accedo alla schermata ed effettuo il login: il codice chiama una classe manager che interroga il database(manager puo' essere benissimo composta da metodi statici), se le credenziali sono corrette allora (SOLO ORA) istanzi un Session, che non si deve piu' preoccupare di fare l'interrogazione, e lo salvi nella tua struttura dati.
Se ho capito male, prova a rispiegarmi dove ho frainteso che cosi' guardo se posso darti una mano.
Ciao
P.s. ha differenza del C dove la memoria rimane occupata se non si dealloca lo spazio, Java ha un meccanismo automatico che libera la memoria quando gli oggetti non sono più "raggiungibili", quindi non ha bisogno di "distruttori".