Considering you posted this in the PHP forum I am assuming this is online and is probably dealing with a SLQ or MySQL database.

The problem lies in that it takes 10 minutes b/c that is the fastest the server can spit out the emails, either due to bandwidth restrictions or the server just isnt fast enough for such a job due to lack of memory or physical resources.

Honestly the only other way would be to send them all at once, but that will take just as long (if not longer and would reveal everyones email address to everyone who received the email).

-Matt