Have to delete cron_last every time for cron.php to work
Basically, you can't delete it with your code - it's set up after last cron hook finishes, so no matter what you do inside Drupal, it'll be set. If the last line that gets executed is module_invoke_all('cron') (in Drupal 6) or module_invoke_all('cron_queue_info'); (in Drupal 7 real cron tasks are wrapped in try catch so this is the only really risky point), or if your server logs timeouts, it's probably a faulty module that fails to execute it's hook_cron, or too many modules defining it, so at some point it times out.

I see two ways to deal with it:


Use Elysia Cron and with it's GUI manually run cron tasks you need to test. That way even if single task will fail, other will get executed. they will be executed one at a time, if you set it up correctly, so less risk of a timeout. And you will be able to test which hook, exactly, fails to execute. Then simply uninstall faulty module, or fix it, and you'll be OK.
In MySQL, create a trigger that will delete cron_last value for you. PostgreSQL supports triggers too, and most of RDBMS support them or something similar to them. It will not solve your problem, but it's way faster than point 1. and it will get you going if all you need is quick and dirty hack.