lets say you can only send 20 in a cycle and the email addresses are in a table somewhere
your first pass calls
sendbulk.php
it selects the first 20 emails using limit 0,20 at the end of the query
it has
then outputs a metarefresh but calls sendbulk.php?start=20
which selects 20 emails using limit $start, 20
$start += 20
and outputs a metarefresh that calls sendbulk.php?start=$start
and finally when all are done it doesn't output the metarefresh at all but echo's "Finished"
So all you have to do is call the script and let the browser do it's thing.
NOTE this is just a strategy - it's up to you to know how to implement it and work it in with your existing code. Let me know how you get on.