for(var i = 0; i < 5; i++) {
(function(i) {
setTimeout(function() {
console.log(i);
}, 500);
})(i);
}
Если же Вам нужно, что таймауты срабатывали по очереди, то никакой цикл не нужен:
var i = 0;
setTimeout(function() {
alert(i);
if(++i < 5) setTimeout(arguments.callee, 500);
}, 500);