いろいろ適当だけど考え方としてはこんなん

private int count = 0;
private ManualResetEvent wait = new ManualResetEvent(false);

public void ShowAndExecute( string url , ref WebBrowser wb)
{
count = 2; // 処理の個数
 wb.DocumentCompleted += new WebBrowserDocumetCompleteEventHandler(this.wb_DocumentCompleted)
wait.WaitOne();
wait.Reset();
}

private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
Interlocked.Decrement(ref count);
if (count == 0) {
wait.Set();
}
}

それよかDocumentCompletedを毎回追加している所の方が俺の興味を引いたが