Sono riuscito ad arrivare all' effetto richiesto, il problema è che se voglio ripetere la funzione più volte l'animazione risulta accelerata alle prime esecuzioni per poi arrivare alla velocità giusta solo all'ultima esecuzione, come mai? vi posto il codice:

<html>


<div id="muovi"> HTML </div>
<script type="text/javascript">

var startx = 0;

function Sposta(div)

{
if(startx < 1000)
{
document.getElementById(div).style.marginLeft = "+" + startx + "px";
startx+=1;
setTimeout("Sposta('" + div + "')",50);
}
else
{
document.getElementById(div).style.marginLeft = "0px";
startx=0;
}
}

for (var i=0;i<10;i++)

{
Sposta('muovi');
}


</script>


</html>