I have a similar situation and I think the problem is that the VP and menu are displayed and conditions checked before the initialisation process runs.
2 possible solutions:
1) I have not tried this and I don't even know if it is possible, but can you run your initialisation process from the login notification?
2) Create a blank VP with the initalization process and set this VP to the one the user logs into. At the end of your initialization process add DISPLAY PERSPECTIVE to switch to the real VP.
If I remember correctly, I did try this and there is an annoying flicker when the first VP displays and almost immediately switches to the real VP.
FYI: my conditions that are set in my initialization process do not change that much, so they are usually the same between logins and I do not experience this issue very much. When the conditions do change, I just live with the fact that the user will not see any change until the next time they login.