Hier ein einfaches und sehr kompaktes Beispiel um ein Hintergrundbild in einem Div auf und abfahren zu lassen.

Beispiel

addtarget({posx},{posy},{speed},{frames});

Die Funktion addtarget definiert ein Ziel des Bewegungsablaufs.
Dabei wird die PositionX und PositionY übergeben.
Speed definiert, den Intervall zwischen den Bewegungen in Millisekunden.
und Frames die Anzahl an Frames zwischen den einzelnen Bewegungsintervallen.

HTML
<div id='container'><div></div></div>
CSS
#container {overflow:hidden;margin-left:300px;margin-top:300px;width:300px;height:200px;border:solid red 3px;position:relative;padding:0px;}
#container div {width:2339px;height:989px;background-image:url(Image.jpg);position:absolute;top:-10px;left:-10px;margin:0px;padding:0px;}
Javascript
var dv;
var target=new Array();
window.onload = (function(){

dv = document.getElementById('container').firstChild;

//addtarget(-400,0,50,5);
//addtarget(0,0,50,5);

addtarget(-20,-400,40,5);
addtarget(-30,-400,40,5);
addtarget(-250,-450,40,5);
addtarget(-1000,-650,40,6);
addtarget(-1100,-450,40,4);
addtarget(-1500,-90,40,4);
addtarget(-2000,-120,40,4);
addtarget(-1900,-110,60,2);
addtarget(-1,-1,40,5);

movingloop();
});
function addtarget(x,y,speed,frames)
	{
	str=x + ',' + y + ','+ speed +','+ frames;
	target.push(str);
	}
function appendpos(x,y)
	{
	var cx = (dv.style.left.replace("px","")*1);
	var cy = (dv.style.top.replace("px","")*1);

	console.log('X:' + dv.style.left  + ' Y:' + dv.style.left.replace("px",""));

	if(x!=0)
		dv.style.left=(cx+x) + 'px';
	if(y!=0)
		dv.style.top=(cy+y) + 'px';
	}
function movingloop()
	{
	ii=0

	c_x=dv.offsetLeft;
	c_y=dv.offsetTop;

	for (var i = 0; i < target.length; i++)
		{
		t_x = 0;
		t_y = 0;
		m_x=0;
		m_y=0;
		t = target[i].split(',')
	
		while(c_x!=t[0] || c_y!=t[1])
			{
			ii+=1
			if(c_x!=t[0])
				{			
				if(c_x0 && c_x+(m_x*1) > t[0])
					m_x=1
				else if (m_x<0 && c_x+(m_x*1) < t[0])
					m_x=-1				
				c_x+=(m_x*1)
				}
			else
				m_x=0;

			if(c_y!=t[1])
				{
				if(c_y0 && c_y+(m_y*1) > t[1])
					m_y=1
				else if (m_y<0 && c_y+(m_y*1) < t[1])
					m_y=-1

				c_y+=(m_y*1)
				}
			else
				m_y=0;
			setTimeout("appendpos(" + m_x + "," + m_y + ")",(ii*t[2]))
			}
		}
	ii+=1
	setTimeout("movingloop()",(ii*t[2]))
	}