Creo que tiene errores el captcha, te paso uno que hizo un amigo 
En tu formulario agrega:
Y llamas a la imagen: <img src="crear_imagen.php?<?php echo SID;?>">
En donde procesas el formulario:
En crear_imagen.php
Saludos

En tu formulario agrega:
Código [Seleccionar]
<?php
session_start();
$captcha_texto = "";
for ($i = 1; $i <= 6; $i++) {
$captcha_texto .= caracter_aleatorio();
}
$HTTP_SESSION_VARS["captcha_texto_session"] = $captcha_texto;
function caracter_aleatorio() {
mt_srand((double)microtime()*1000000);
$valor_aleatorio = mt_rand(1,3);
switch ($valor_aleatorio) {
case 1:
$valor_aleatorio = mt_rand(97, 122);
break;
case 2:
$valor_aleatorio = mt_rand(48, 57);
break;
case 3:
$valor_aleatorio = mt_rand(65, 90);
break;
}
return chr($valor_aleatorio);
}
?>
Y llamas a la imagen: <img src="crear_imagen.php?<?php echo SID;?>">
En donde procesas el formulario:
Código [Seleccionar]
<?php
session_start();
$texto_ingresado = $HTTP_POST_VARS["texto_ingresado"];
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_session"];
if ($captcha_x == $captcha_texto) {
//si lo puso bien
$destinatario = "xxxxxxxx@gmail.com"; // Quien recibirá los corroes
$asunto = "Mensaje de la pagina PurasPruebeas: ".$asunto; // tema del correo
// Este es el Cuerpo, el contexto del mensaje, la esencia del correo, el todo :)
$cuerpo ="El sr(a) $nombre dice: <br><br> \"$mensaje\", su email es: $email.<br> para dominio: $dominio";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
// Este es para decir, de donde viene
$headers .= "From: ".$nombre." <".$email.">\r\n";
// aqui entra el trabajo del mail()
mail($destinatario,$asunto,$cuerpo,$headers) ;
header('Location: contacto.php?envio=si');
}
else{
//si lo puso mal
header('Location: contacto.php?envio=no&error=captcha');
exit();
}
session_unset();
session_destroy();
En crear_imagen.php
Código [Seleccionar]
<?php
//creamos la imagen definiendo el tamaño del alto y el ancho (150, 40)
$captcha_imagen = imagecreate(150,40);
//creamos el color negro para el fondo y blanco para los caracteres
$color_negro = imagecolorallocate ($captcha_imagen, 0, 80, 85);
$color_blanco = imagecolorallocate ($captcha_imagen, 255, 255, 255);
//pintamos el fondo con el cplor negro creado anteriormente
imagefill($captcha_imagen, 0, 0, $color_negro);
//iniciamos la session para obtener los caracteres a dibujar
session_start();
$captcha_texto = $HTTP_SESSION_VARS["captcha_texto_session"];
//dibujamos los caracteres de color blanco
imagechar($captcha_imagen, 4, 20, 13, $captcha_texto[0] ,$color_blanco);
imagechar($captcha_imagen, 5, 40, 13, $captcha_texto[1] ,$color_blanco);
imagechar($captcha_imagen, 3, 60, 13, $captcha_texto[2] ,$color_blanco);
imagechar($captcha_imagen, 4, 80, 13, $captcha_texto[3] ,$color_blanco);
imagechar($captcha_imagen, 5, 100, 13, $captcha_texto[4] ,$color_blanco);
imagechar($captcha_imagen, 3, 120, 13, $captcha_texto[5] ,$color_blanco);
$rand1=rand(0,50);
$rand2=rand(2,7);
$rand3=rand(120,150);
$rand4=rand(34,50);
imageline($captcha_imagen, $rand1, $rand2, $rand3, $rand4, $color_blanco);
//indicamos que lo que vamos a mostrar es una imagen
header("Content-Type: image/png");
//mostramos la imagen
imagepng($captcha_imagen);
?>
Saludos