You cannot do smooth transition using only body background image. As a workaround, you could try to use a temp DIV as following:
$(function () {
var body = $('body');
var backgrounds = new Array(
'url(images/hso-boardwalk-background.jpg)',
'url(images/hso-palmtree-background.jpg)'
);
var current = 0;
function nextBackground() {
var bckg = backgrounds[current = ++current % backgrounds.length];
var tmpDIV = $('<div/>', {
id: "tmpDIV"
}).prependTo('body').hide().css({
position: "absolute",
zIndex:-1,
top:0,
left:0,
height: $(window).height(),
width: $(window).width(),
background: bckg
}).fadeIn("slow", function () {
body.css('background',bckg);
$(this).remove();
});
setTimeout(nextBackground, 5000);
}
setTimeout(nextBackground, 5000);
body.css('background', backgrounds[0]);
});