Это определенно выполнимо, хотя и немного сложно. Я делаю то же самое на сайте, который делаю, за исключением снега. Есть 2 слоя png файлов, и я использовал плагин backgroundPosition, чтобы animate мог изменять положение фона - http://cornerstonegreentraining.com/comfortize.com/index.php, если вы хотите увидеть черновик. Переменная скорость только потому, что мне нравится работать в секундах, а не в миллисекундах. Я использовал следующий код:
$(function(){
bgSnow(100000, 1);
function bgSnow(animateTime, ratio){
var speed = 1000;
$('#snow2').animate({
backgroundPosition:"(" + speed*15*ratio + "px "+ speed*15 +"px)"
}, animateTime, 'linear');
$('#snow1').animate({
backgroundPosition:"(" + speed*6*ratio + "px "+ speed*4 +"px)"
}, animateTime, 'linear', function(){
clearSnow(animateTime, ratio);
});
}
function clearSnow(animateTime, ratio){
$('#snow1, #snow2').css('backgroundPosition',"0px 0px");
bgSnow(animateTime, ratio);
}
});
Вы можете добавить еще пару анимаций разной продолжительности для некоторых вариаций. Это решение работает с IE7 - вам придется искать выход, если вы используете решение css3 или canvas.