El formulario está hecho para redirigir a su action. Si querés evitar esa acción tenés que usar return false.
Te recomiendo plantear tu código de esta manera:
Código HTML:
<form name="form1" id="formulario">
<input type="text" name="num" /> Contraseña<br />
<input type="submit" value="entrar" />
</form>
<script type="text/javascript">
document.getElementById('formulario').onsubmit = function(){
if (document.form1.num.value=="1234"){
window.location.href="home.htm";
} else {
alert("Error en Contraseña. Intenta de nuevo.");
}
return false;
}
</script>