я делал так:
var heavyImage = new Image();
//определяем путь к картинке,
в это время, как я понял, картинка начинает загружаться: "Когда назначаешь свойство src имиджу, начинается его скачивание/проверка с сервера"
heavyImage.src = "путь";
//как только картинка загружена, меняю стиль
heavyImage.onload = function() {
someElement.style.backgroundImage = 'url(' + heavyImage.src + ')';
};
в итоге когда меняется картинка, то на время появляется просто белая область и потом только появляется нужная картинка