Один из вариантов - использовать несколько фонов. Имейте маленький фон как нижний слой и покрывайте его большим фоном.
Может быть сложно иметь два фона, если вы хотите, чтобы он был на теле и хотите поддерживать IE. Решение может состоять в том, чтобы начать меньший фон тела, используя JS, чтобы изменить фон низкого разрешения на высокий, после его загрузки:
var i = new Image();
i.onload = function(){document.body.style.backgroundImage = 'url(' + i.src + ')';}
i.src = 'gigantic.jpg';
Имейте в виду, что для такого большого фона требуется больше оперативной памяти, чем в некоторых мобильных браузерах (iPhone до 3GS либо вообще не откажется декодировать такое изображение, либо начнет очищать содержимое кэша / вкладки в панике).
Последняя проблема может быть решена с помощью CSS Media Queries:
http://lofotenmoose.info/css/destroy/media-queries-background-stretch/
За исключением запроса max-device-width
вместо (виртуальный / увеличенный) max-width
.