You'll need something like the following (maybe-working example code):

    $users = /* receive array of user objects here */;
    foreach ( $users as $user )
    {
        $user_email_addresses[] = $user->email; // receive array of user mail addresses here
    }
    
    function wpse28212_send_delayed_bulkmail( $email_addresses )
    {
        $i = 0;
        foreach ( $user_email_addresses as $email_addy )
        {
            ++$i; // count users up
    
            $delay = 0; // in miliseconds (ms)
    
            if ( $i >= 500 )
            {
                $delay = 3600000; // 1 hour
            }
            sleep( $delay );
    
            wp_mail( $email_addy, 'subject', 'message' );
        }
    }

Links:

* [`wp_mail();`](http://codex.wordpress.org/Function_Reference/wp_mail)
* [`sleep();`](http://php.net/manual/de/function.sleep.php)
* [`usleep();`](http://php.net/manual/en/function.usleep.php) // alternate to `sleep();`