Splash Screen, nao e iniciado porque?

Galera, eu estava lendo o artigo que esta publicado aqui no guj que fala a respeito de Splash Scren, porem fui implementar o código, mas a imagem do splash nao aparece, me ajudem a verificar porque que nao esta sendo executando corretamente.

Estou iniciando o main com o seguinte código;

public static void main(String[] args) {
      //Faz o Splash aparecer na tela
        Splash.getInstance().openSplash();
        JFrmLogin frm = new JFrmLogin ();// Tela que aparece depois que o splash e executado, mas o splash nao esta aparecendo
        frm.initApplication();
    }

Segue o classe Splash que estou utilizando para carregar a imagem;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GraphicsConfiguration;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.Cursor;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Splash extends Window
{
	// Mensagem a ser mostrada junto com a imagem
	private final String message = "Splash";

	// Imagem que ira aparecer no Splash
	private final String imgName = "splash_guj.jpg";
	Image splashImage;
	Toolkit toolkit;
	private static Splash splash;

	// Singleton pra garantir apenas uma unica instancia na memoria
	static {
		splash = new Splash();
	}

	private Splash()
	{
		super(new JFrame());
                //JOptionPane.showMessageDialog(this,"Criando Splash ...");
		System.out.println("Criando Splash()...");
		setVisible(true);

		splashImage = null;
		toolkit = Toolkit.getDefaultToolkit();
	}

	public static Splash getInstance()
	{
		return splash;
	}

	/**
	 * Method initSplash.
	 */
	private void initSplash()
	{
		// Carrega a imagem na memoria
		MediaTracker media = new MediaTracker(this);
		splashImage = toolkit.getImage(imgName);

		if (splashImage != null) {
			media.addImage(splashImage, 0);

			try {
				media.waitForID(0);
			}
			catch (InterruptedException ie) {}
		}

		// Configura o tamanho do splash e a posicao na tela
		setSize(splashImage.getWidth(this), splashImage.getHeight(this));

		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension size = getSize();

		if (size.width > screenSize.width)
			size.width = screenSize.width;

		if (size.height > screenSize.height)
			size.height = screenSize.height;

		setLocation((screenSize.width - size.width) / 2, (screenSize.height - size.height) / 2);
		setVisible(true);
	}

	public void openSplash()
	{
		setCursor(new Cursor(Cursor.WAIT_CURSOR));
		initSplash();
	}

	public void finish()
	{
		setVisible(false);
		dispose();
	}

	public void paint(Graphics g)
	{
		// Apenas desenha a nossa mensagem em cima da imagem
		g.drawImage(splashImage, 0, 0, getBackground(), this);
		g.setFont(new Font("Arial", Font.BOLD, 26));
		g.drawString(message, (int)(splashImage.getWidth(this) / 2) - 80, 30);
	}

}

Desde ja agradeço a atenção de todos.

Tá programando em Java 4?

Creio eu que sim, estou utilizando a seguinte versão do JDK e 1.06.

Então é muito mais fácil, não precisará de nenhuma linha de código e o splash aparecerá antes mesmo da VM subir.
Você pode remover todo esse código e só usar os parâmetros da inicialização para seu splash mostrar automaticamente.

Dá uma lida:
http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/splashscreen/

Vini, muito obrigado !!!