En el código que muestras se pinta el JFrame por que le haces un setVisible antes de bloquear el Thread. Pero despues de eso en el accept se bloque y si tuvieras algun boton o algo verías que seguramente no lo puedes pulsar etc.
Tienes que usar otro Thread, no es un capricho
. Puedes ver más información aqu:
http://www.programacion.com/java/tutorial/swing/10/
o en el original aquí:
http://java.sun.com/products/jfc/tsc.../threads1.html
O buscando por Swing y Threads, verás que hay mucha tinta vertida sobre el tema.
S!