> How can an Elisp programmer be sure the frame creation has
> finished without any reference to its creation thread?
The usual way is to insert
(sit-for 0 t)
before the code that needs the frame visible. You can see this, e.g.,
in fancy-splash-frame and in some other places.