I believe I experienced a similarly odd behaviour, and as far as I can recall the matter, it was due to Component.onCompleted being triggered upon instantiation of the object, therefore before the object is made visible.
As for workaround, maybe try to set visibility property in the Window definition rather than in onCompleted. Another way might be for onCompleted to call a function to set the visibility: the idea is in the race between onCompleted and the rendering engine, setting a function would trigger processing time to be allocated to the engine at the expense of the visibility function which would wait for its turn, so that when the engine is done, the Window is displayed.
But maybe all this is just shit talking...I haven't tried it before writing these lines:-)