My first thought is that you would have to put into each callback that is used during the tutorial an IF statement, at the end of the callback, which checks whether or not the MSGBOX exists. One way to do this would be to create a TAG for the MSGBOX (or store the handle when created using GUIDATA, etc.), then use:
msg_h = findall(0,'tag','MSGTAG');
In the body of the IF statement, you would call FIGURE to give focus to the MSGBOX and/or update the string in the MSGBOX to reflect the next set of instructions in the tutorial. Note that if you store and extract the handle to the MSGBOX, then you will have to check if it is a handle using ISHANDLE, because the user might delete it!