El problema es que te salta este error, ¿no?
Código PHP:
if (!$_POST[imagen]){
$error .='-El campos imagen es obligatorio.<br><br>';
}
Prueba a quitar esa condición y a usar esta otra:
Código PHP:
if ( !is_uploaded_file( $_FILE['imagen']['tmp_name'] ) )
De hecho, yo comprobaría que la imagen está subida antes de tratarla.
Veo por tu código que estás usando la función
crearThumb que publiqué en otro tema. Me alegro de que te esté sirviendo ;)