Dato che siamo all'interno dello stesso thread, non utilizzare il mio suggerimento precedente ... magari lo userai quando farai una versione multithread.

Adesso ti basta utilizzare la

codice:
Imports System.Threading
e dichiarare una variabile nella classe

codice:
Private flDow As Boolean
Poi, subito prima del DownloadFileAsync scrivi

codice:
flDow = True
e subito dopo

codice:
   While flDow
      Application.DoEvents()
      Thread.CurrentThread.Sleep(20)
   End While
Infine, dovrai utilizzare l'evento download_DownloadFileCompleted, in cui scriverai

codice:
flDow = False