Ну, во-первых, стоит сказать, что если вы вызываете setTimeout, но не меняете интервал, вы должны использовать setInterval.
edit (обновление из комментария): вы можете сохранить ссылку из замыкания, если она используется как класс, и setInterval / clearInterval не требует повторной ссылки.
edit2: было отмечено, что вы написали calle e , который будет работать совершенно корректно и однозначно на 100%.
Из полноты, это работает:
function f()
{
alert('foo');
window.setTimeout(arguments.callee,5000);
}
f();
поэтому я опробовал document.write вместо alert, и именно в этом и заключается проблема. doc.write чреват такими проблемами из-за открытия и закрытия DOM для записи, так что, возможно, вам нужно изменить innerHTML вашей цели, а не doc.write