Por algúna razón la variable diferencia tiene siempre el mísmo valor, pero he comprobado la variable actual y es correcta.

El código es el siguiente:
Código:
//Javascript code
var meses,dias,horas,minutos,segundos,milisegundos,actual,destino,diferencia;
function init()
{
actual= new Date();
destino = new Date();
diferencia = new Date();
actual=actual.getTime();
destino.getTime(2010,5,14);
diferencia = destino - actual;
meses = Math.floor(diferencia / (1000*3600*24*30));
dias = Math.floor((diferencia - meses*1000*3600*24*30) / (1000*3600*24));
horas = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24) / (1000*3600));
minutos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600) / (1000*60));
segundos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600 - minutos*1000*60) / (1000));
milisegundos = Math.floor((diferencia - meses*1000*3600*24*30 - dias*1000*3600*24 - horas*1000*3600 - minutos*1000*60 - segundos*1000));
document.getElementById("meses").innerHTML=meses + " meses";
document.getElementById("dias").innerHTML=dias + " dias";
document.getElementById("horas").innerHTML=horas + " horas";
document.getElementById("minutos").innerHTML=minutos + " minutos";
document.getElementById("segundos").innerHTML=segundos + " segundos";
document.getElementById("milisegundos").innerHTML=milisegundos + " milisegundos";
loop();
}
function loop()
{
if(milisegundos>9)milisegundos-=100;
else if(segundos>0){
milisegundos=1000;
segundos--;
}
else if(minutos>0){
segundos=59;
milisegundos=1000;
minutos--;
}
else if(horas>0){
minutos=59;
segundos=59;
milisegundos=1000;
horas--;
}
else if(dias>0){
milisegundos=1000;
segundos=59;
minutos=59;
horas=24;
dias--;
}
else if(meses>0){
milisegundos=1000;
segundos=59;
minutos=59;
horas=24;
dias=29;
meses--;
}
document.getElementById("meses").innerHTML=meses + " meses";
document.getElementById("dias").innerHTML=dias + " dias";
document.getElementById("horas").innerHTML=horas + " horas";
document.getElementById("minutos").innerHTML=minutos + " minutos";
document.getElementById("segundos").innerHTML=segundos + " segundos";
document.getElementById("milisegundos").innerHTML=milisegundos + " milisegundos";
setTimeout("loop()",100);
}


