How about a different approach - quick edit, and needs some tweaking no doubt, like getting rid of the display:none entirely and use opacity instead, etc:
jsFiddle
CSS:
body
{
    width:100%;
    height:100%;
}
.bgImage
{
    display:none;
    width:100%;
    height:100%;
    position:absolute;
    top:0;
    left:0;
}
HTML:
<div id="background_image">
    <img id="bgImage_1" class="bgImage" src="https://dl.dropboxusercontent.com/u/59549499/example/img/img1.jpg">
    <img id="bgImage_2" class="bgImage" src="https://dl.dropboxusercontent.com/u/59549499/example/img/img2.jpg">
    <img id="bgImage_3" class="bgImage" src="https://dl.dropboxusercontent.com/u/59549499/example/img/img3.jpg">
</div>
JS:
curImage = 0;
nextImage = 1;
function changeBG()
{
    jQuery('#bgImage_' + nextImage).css('opacity', 0).show().animate({'opacity': 1}, 300);
    if(curImage > 0) jQuery('#bgImage_' + curImage).animate({'opacity': 0}, 300);
    curImage = nextImage;
    nextImage++;
    if(nextImage > 3) nextImage = 1;
}
changeBG();
setInterval(changeBG, 2000);