Hola:
Formulario... ¡por supuesto!, iframe ¿Por qué?
Botón submit sí Para mí es lo más importante, de otra forma sería un formulario inaccesible.
El funcionamiento creo que siempre será igual: se genera la clave de forma aleatoria, y se guarda en una variable de sesión. La validación en el navegador muy sencilla: básicamente controlar que se escribió algo en el campo asociado.
Para cambiarlo, si quieres pinchando sobre el propio captcha es añadirle un parámetro fantasma a la url y claro la generación de la clave desde el mismo código del captcha, por ejemplo:
<img src="captcha.php" onclick="this.src = 'captcha.php?fantasma=' + Math.random()"...
Saludos