Tu esquema es un poco confuso, por que hacer un innerHTML si tu php puede generar el mensaje por si mismo, faltaría saber si el form y la respuesta están integradas en un solo archivo o si son 2 distintos.
Si después de mostrar un mensaje querés agregar una redirección, entonces usas el stTimeout como te indiqué para dar tiempo a leer el mensaje
Ejemplo
formulario.php
Código PHP:
Ver original<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>titulo</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
if(!isset($_POST['procesar'])){ ?>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="post">
<input type="text" name="nombre" /><br />
<input type="submit" value="contactar" name="procesar" />
</form>
<?php
}else{
// envio email
$mail = "correcto";
if($mail == 'correcto'){
echo "<p>Tu mensaje ha sido enviado, en unos segundos serás redirigido a nuestra página principal</p>";
echo <<< SCRIPT
<script type="text/javascript">
function redir(){
window.location.href = "index.html";
}
setTimeout('redir()', 3000);
</script>
SCRIPT;
}else{
echo "<p>Se ha producido un error al enviar, <a href='". $_SERVER['SCRIPT_NAME'] . "'>inténtar nuevamente</a></p>";
}
}
?>
</body>
</html>
Para verificar, cambia el valor de la variable $mail a otra cosa. Demás está decir que tu php, antes de enviar el email, debería hacer las validaciones correspondientes
Saludos