Для загрузки изображений когда то написал функцию, до сих пор использую
function loadResources(arr,func){//функция загрузки внешних ресурсов(картинок) arr - массив ссылок, func - функция которая вызовется после загрузки всех ресурсов
var loadStatus = false;
loadStatus = {count: arr.length, loaded: 0, percent: 0};//count - общее количество ресурсов, loaded - сколько загружено ресурсов, percent сколько загружено в процентах
for(var i = 0; i < arr.length; i++){
var tmp = new Image();
tmp.src = arr[i];
tmp.onload = function(){
loadStatus.loaded++;
loadStatus.percent = (loadStatus.loaded * 100)/loadStatus.count;
if(loadStatus.loaded >= loadStatus.count)
func();
}
}
return loadStatus;
}