I would make a table like user INT, task TEXT, duedate, DATE, status VARCHAR(20).
Then I would pull:
select * from users where duedate<now() and status='Pending';
while ( $a_row = mysql_fetch_array( $query ) )
{
$body = "Hello $a_row[user]!\nYou have a pending task:\n\n$a_row[task]\n\nPlease finishing it or suffer the consequences. It was due $a_row[date].\n";
/* code to send email */
}
Obviously that won't work if you copy and paste it, but you should get the gist.
OHB