Allora...prima di tutto ti consiglierei di postare il codice php tra tag php altrimenti è veramente difficile leggerlo, poi ti consiglierei anche di postare solo il codice che ci interessa davvero non tutti i fronzoli che rendono difficile la lettura e basta.
Dopo questa premessa posso dirti che io personalmente sostituirei il metodo GET con il metodo POST. Il metodo GET mostra le variabili che passano da una pagina all'altra nella barra dell'indirizzo e quando sono tante, non passano tutte....potrebbe essere questo il tuo problema.
Poi cos'è: action='?inviodati=ok' ????
nell'action va messo il nome successiva, dove andranno mandati i dati....si chiama così???

Cmq tutti i campi del form sia compilati che non compilati vengono mandati alla pagina successiva (tranne i checkbox e i radio), quindi tu devi controllare che il loro valore non sia nullo. Questa cosa non si fa di certo così:

( $modulo == TRUE && $nome == TRUE && $cognome == TRUE && $nato == TRUE && $data == TRUE && $domicilio == TRUE && $citta == TRUE && $provincia == TRUE
&& $cap == TRUE && $professione == TRUE && $telefono == TRUE && $cellulare == TRUE && $studio == TRUE && $mail == TRUE && $licenza == TRUE && $societa == TRUE
&& $codice == TRUE && $qualifica == TRUE && $conseguita == TRUE && $il == TRUE && $decorrenza == TRUE && $grado == TRUE && $conseguito == TRUE && $il1 == TRUE
&& $decorrenza1 == TRUE && $stile == TRUE && $corso == TRUE && $programma == TRUE && $il2 == TRUE && $versamento == TRUE ) {

scrivere $nome==TRUE non vuol dire niente perchè $nome ha come valore, ad esempio, MARTINA e quando mai MARTINA == TRUE????
per vedere se un campo è stato settato si fa: isSet($nome_campo).
E cmq ti ripete che il controllo isSet($nome_campo) non va bene per i componenti del tuo form per quelli bisogna fare un controllo sul contenuto $nome==''.


Facci sapere