Hola:
Depende de lo que entienes por "se cargue el programa".
El tiempo que tarda en arrancar la máquina virtual, cargar tu aplicación en memoria y llamar al main() no tienes control ni puedes hacer nada, ya que si ni siquiera te han llamado al main(), dificilmente puedes hacer nada con una barra de progreso. Para estos casos existe la splash screen, que básicamente es una imagen (quizás pueda ser un gif animado) que se mostrará hasta que tu programa arranca. Aquí tienes un ejemplo
http://chuwiki.chuidiang.org/index.p..._Splash_Screen
Si una vez se ejecuta tu main() tu código tiene que hacer una serie de cosas que pueden tardar antes de estar listo para funcionar, ahí si puedes poner el progressbar. Aquí un ejemplo, en el punto 4
http://chuwiki.chuidiang.org/index.p...on_SwingWorker y aquí otra forma de hacerlo sin SwingWorker
http://chuwiki.chuidiang.org/index.p...hread)_de_Java
Se bueno.