Hal has a minute timer, you could use it as an exit for your do while loop, set a var to zero before the do loop and increment it in the minute timer, if too many minutes go by you could exit the do loop.
Do While objExplorer.Busy Or (objExplorer.READYSTATE <> 4) : Loop
could be
'----------------------------------------
Rem PLUGIN: FUNCTIONS
'
'------------------
' Declare variables
'------------------
Dim exitVar
'----------------------------------------
' your code ........
'
exitVar = 0
do while objEeplorer.Busy or (objExplorer.READYSTATE <> 4) and (exitVar <> 5) : Loop
'-----------------------------------------
Rem PLUGIN: MINUTE_TIMER
'
' Passed MinutesPast
' Called every minute
exitVar = exitVar + 1
'------------------------------------------
exitVar will increment 1 each minute when it reaches 5 the do loop will exit. This should solve your problem.
Good luck