claro, porque al usar document.write limpias por completo el 
lienzo html, y por lo tanto borras hasta la misma función, úsalo así:    
Código Javascript
:
Ver original<script type="text/javascript">
    function reloj(){   
        var f = new Date();  
        var a = f.getFullYear();
        var m = new Array ("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
        var d = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado");;
        var h = f.getHours();
        var mi = f.getMinutes();   
        var s = f.getSeconds(); 
        document.getElementById("capa_reloj").innerHTML=  ('Hoy es ' + d[f.getDay()] + ', ' + f.getDate() + ' de ' + m[f.getMonth()] + ' de ' + a + ' y son las ' + h + ':' + mi + ':' + s );
    } 
    setInterval("reloj()", 1000); //500 para que si no muestras lo microsegundos???
</script>
<div id="capa_reloj"></div>