He conseguido arreglarlo, exactamente ese era el problema, ya que parseInt transforma valores a diversas bases y hace un lios muy raros, el caso es que cambié los parseInt de las variables por ParseFloat y listo(;
Código HTML:
<html>
<head>
<title>Contador</title>
<script type="text/javascript">
function arrancarcontador() {
var segundos = document.getElementById('contador2');
var minutos = document.getElementById('contador1');
if (segundos.innerHTML < '09') {
valor = parseFloat(segundos.innerHTML)+parseInt('1');
segundos.innerHTML = '0'+valor;
setTimeout('arrancarcontador()', 1000);
}
else if (segundos.innerHTML == '59') {
minutos.innerHTML = parseInt(minutos.innerHTML)+parseInt('1');
segundos.innerHTML = '00';
setTimeout('arrancarcontador()', 1000);
}
else if (segundos.innerHTML >= '09'){
valor2 = parseFloat(segundos.innerHTML)+parseInt('1');
segundos.innerHTML = valor2;
setTimeout('arrancarcontador()', 1000);
}
}
</script>
</head>
<body onload="arrancarcontador()">
<center><div id="contador" class="contador">
0<span id="contador1" class="contador1">0</span>
:
<span id="contador2" class="contador2">0</span>
</div></center>
</body>
</html>