No.
In all of the ways that it is possible to run multiple scripts simultaneously, the scripts are running in separate processes, and it is not possible for one MATLAB process to monitor the internal state of a different process without the cooperation of the second process.
Normally GUIs do some work and then return back to the intepreter, and whatever invoked them then continues. Often there isn't really anything else, and the interpreter sits around until a callback is triggered, and the reacting function for that is run and then the interpreter is returned to to wait for another callback to be triggered. This sequence can be modified so that the calling function is not given back control until some particular graphics event happens (for example the user clicks a button on a confirmation dialog.) This is not having several scripts run simultaneously: at any one time one script has control and the other scripts do not progress until the first one gives up control or is interrupted in particular ways.
The mechanism to wait for a certain thing to happen is to use waitfor() passing in a description of what is being waited for.
It is not possible to wait for a particular variable to be created. It is, however, possible to wait for a particular property of a graphics object to be changed, including waiting for it to be become a particular value.
For this purpose, guidata(), the handles structure, is technically implemented as a property that you could waitfor() on, if you know the hidden ways to do that, but you cannot waitfor() a particular structure member within the handles structure. You would have a much easier time waitfor() a uicontrol pushbotton to pushed, or waitfor() Userdata of a graphics object to be changed.