Hola!
He modificado un poco tu script, a ver que te parece. Te informo de que funciona en el IE (4.0) y en el NS solo a partir de la versión 6.0
Código:
<html>
<head>
<title>Animación</title>
</head>
<body>
<script language=javascript>
var posicion=0;//Posicion inicial
var velocidad=1;//Cantidad de pixels que avanza cada vez
var milisegundos=5; //Retardo
var posfinal=0;//Donde queremos que se pare. Si es 0 se parará al final de la pantalla.
if (posfinal==0){posfinal=screen.height;}
function fun(){
posicion=eval(posicion+velocidad);
document.getElementById('hola').style.top = posicion;
if (posicion<posfinal){setTimeout("fun()", milisegundos);}
}
</script>
<body onload="javascript:fun()">
<div id=hola style="text-align:center;position: absolute;width:100px;height:50px;border:solid 1px black;">
<p style="vertical-align:middle">Hola</p>
</div>
<script>
</script>
</body>
</html>
Si tienes cualquier duda pregunta!