Básicamente es lo que comentas. Se lanza una tarea en segundo plano que se encarga de cargar los recursos mientras la tarea principal está mostrando imagenes. Cuando la tarea en segundo plano termina, informa al thread principal y listo.
De echo, no hay que irse al mundo de los videojuegos. Cualquier aplicación de escritorio que tenga una barra de progreso, para que no bloquee la ventana y se vea el progreso, tiene que lanzarse la tarea que hace el "trabajo sucio" en un thread aparte, un
BackgroundWorker, o una
tarea.