@Anonymous
There are a couple of options you can explore:
1) Change the Visible property of the controls to only be visible when certain items are valid in your App. This can be done in many different ways - a very simple solution (may or may not apply to your scenario) is to move all your buttons to the very top of the screen (Y=0). Apply your formula for setting the Y value based on the loaded user - if not loaded then set to 0. Then set the Visible property to !(Y=0) This will return true if the Y value is not 0 and thus be visible. So...once your formulas adjust the Y value, then your control will be visible.
2) Add a Splash Screen to your app that will display until the data you want is loaded and then automatically go to the next/first screen.
3) Play with the Delayed Load advanced feature to see if there is any impact on your timing of data loading. (don't know your specifics, so may or may not help)
4) Oh I had another one in mind when I was typing the above and now it is gone from my mind...If I think of it again, I'll post back.
EDIT: #5 (it's different than what I was thinking with #4 which I still don't recall)
5) Disabled the "non-blocking OnStart rule" in the advanced features to make sure your OnStart completes.
I hope some of the above is helpful for you or sparks some ideas.