Вот простой способ сделать это:
http://jsfiddle.net/DQ4Fh/13/
По сути, просто сложите два div с одним и тем же фоновым изображением (одно расположенное сверху и одно расположенное снизу), сделайте одно менее непрозрачным и измените высоту двух изображений, чтобы контролировать, сколько каждого из них экспонируется.
на производстве вы должны использовать метод jquery animate
в функции setProgress, чтобы он обновлялся плавно. CSS, который я использовал, чтобы установить прозрачность, не является кросс-браузерным, вы должны обновить его или использовать jquery, чтобы установить прозрачность затемненного div.