So perhaps your problem is that your script to hide the gif starts running before the image is actually loaded.
Rather than loading the image with css, you could load it dynamically on document load and set your fadeOut to fire on image load.
js:
var $img = $('<img>', {
src: '../images/loader.gif',
id: 'dvLoading'
}).load(function() {
$(this).fadeOut(2000);
});
UPDATE
forgot to attach your image. of course this could be to any element you choose
$('body').append($img);