Anche io ho avuto problemi simili con i JOptionpane. Un primo consiglio è, qualora non l'avessi fatto, di passare come primo argomento del costruttore del JDialog il JFrame dell'applicazione e non null come talvolta si fa. Se questo neanche funziona, puoi provare a registrare un WindowListener sul frame in modo tale quando interviene l'evento di WindowActivated o WindowdDeiconified puoi invocare un metodo tipo setVisible(true) sul JDialog, se questo era aperto.

Ciao.