вместо setTimeout вам нужно использовать setInterval, чтобы вызывать его снова и снова.
var imagesOnWindow=20;
var i=1;
var start
start = setInterval(function() {
var left=((Math.random() * $('body').width()));
var top=((Math.random() * $('body').height()));
var _img=$("<img/>",{
class:"g59",
src:"https://cdn.intgrl.co/G59/static/images/window.png",
});
$(_img).css('top', top);
$(_img).css('left', left);
console.log(_img);
$('.rastgele').append(_img);
i++;
if(i>imagesOnWindow)
clearInterval(start);
}, 1000);
вы можете увидеть рабочий пример здесь