One of the ways that a mailer in vbulletin handles it is to do a mailout of 1,000 at a time, then it displays a next page. Clicking on that then mails the next 1,000, etc...
A manual process perhaps, but seems to work okay. I was thinking though that it woould be good to do something like this but use a text file with all the emails in it, and delete each email addy from the text file as it is sent. That way if the mailout times out it wont resend to those who already have. Just to those in the list.