Uahm ...
perche' mescoli tutto cosi ' ?

Io farei 1 script per la gestione dell'ulpoad e 1 script per il caricamento e la visualizzazione del form.

Non mescolate mai componenti di tipo "control" con componenti di tipo "view" .

Poi non capisco perche' ricrei l'immagine con la funzioneCreateImage; se usi la funzione move_uploaded_file($src,$dest) fai tutto e sposti il file senza usare le lib gd. ( http://php.net/manual/en/function.move-uploaded-file.php ). Ovviamente devi impostare un controllo di tipo il che ti da piu' flessibilità, se un utente uploada un PDF o un txt o un png che succede ? Con controllo di tipo blocchi a priori.

Inoltre devi fare una bel var_dump($_FILES); prima di tutto per capire effettivamente che struttura dati hai in ingresso per quindi poterla ciclare correttamente.

EDIT :
ho visto ora nel codice dove fai la insert .... ne fai 1 sola con le due immagini in caso che la seconda immagine sia apposto. ....
Per la gestio io di solito lavoro a strati ossia :

1- controllo dati da post e files
2- controllo estensione e dim dei files passati e creo 2 var 1 conta gli errori l'altra concatena eventuali messaggi

3- se il conteggio errori e' 0 proseguo altrimenti gestisco l'errore/eccezione etc....
4- in caso che non ho errori cerco di spostare i files =>
4.1 - SE la dir esiste e il File NON esiste(evitare sovrascritture[opzionale])
4.2 - sposto il file e lo traccio
4.3 - se un file ha problemi e non puo' essere spostato per un qualsiasi motivo
4.3.1 - decido che fare, se proseguore con gli altri , cancellare i files tracciati o fermare tutto, dipende da te come devi gestire sta cosa
5- finita la procedura di spostamento files controllo se ho errori/come li gestisco
6- concateno la query e la eseguo.

Un passo alla volta senza mescolare nulla => codice piu' pulito => DIVIDE ET IMPERA => maggiore manuntenibilità !!