Bueno, te explico lo que pasa.
1- Imprimes el valor de la Sesión captcha, como no existe la sesión captcha, no muestra nada pero mas abajo en
Modificas el valor de la sesión captcha y le agregas el valor que contiene la captcha.
Eso haces en el primer momento de ejecución:
1-Muestra el valor de la Sesión captcha, luego muestra la imagen y luego modificas el valor de la sesión captcha con el valor de la captcha actual.
2-Muestra el valor de la Sesión captcha (Recordando que el valor de la captcha lo modificaste por el valor de la captcha actual), luego muestra la imagen y luego modificas el valor de la sesión captcha con el valor de la captcha actual.
Ejemplo de lo que haces:
<?php
echo $_SESSION['a'];//Muestro la Session a
$_SESSION['a'] = $_GET['x'];//Modifico la Session por otro valor
echo "<br>".$_SESSION['a']; //Muestro el nuevo valor de la Session a
?>
Otro ejemplo:
<?php
$var = 'hola mundo';
echo $var;
$var = '<br>Adios mundo';
echo $var;
?>
Por lo tanto, siempre el primer valor que imprimo sera diferente al segundo.
Lo que tienes que hacer, es mostrar primero la captcha antes de mostrar el valor que contiene la captcha.
Saludos.