Application will load only when it receives a complete event. So you can load one swf, listen for INIT_COMPLETE (that's before complete) preloader.addEventListener(FlexEvent.INIT_COMPLETE, myHandleInitEnd);
At myHandleInitEnd loads another swf and so on... then at last preload you dispatch the last event: dispatchEvent(new Event(Event.COMPLETE)); When application detects Event.COMPLETE, i think flex will go to frame 2, so preloader isn't reachable anymore, only application. I didn't test, so I'm not sure, but i think this way can work.

