prova a modificare la tua funzione così

codice:
function preload() {
	if(r != undefined && r >= 1){
		clearInterval(r);
	}
	var r = setInterval(function(){
			var car = _root.foto.getBytesLoaded();
			var tot = _root.foto.getBytesTotal();
			if (car>=tot) {
				clearInterval(r);
				if (_root.foto._width>0 && _root.foto._height>0) {
					_root.foto._width = 300;
					_root.foto._height = 240;
				}
			}, 100);
}
con il codice precedente avevi un loop che ricreava l'intervalID ad ogni richiamo della funzione stessa, con la conseguenza di bloccare tutto, ogni volta