Il motivo per cui l'eccezione viene generata non appena si immette il metodo è semplice:il compilatore JIT deve solo risolvere i riferimenti in quel momento. MySqlConnection richiede System.Data ed è il primo metodo per farlo, quindi è allora che viene generata l'eccezione.
Per quanto riguarda il debug del problema, sembra che il framework .NET sia installato in modo errato sul computer di destinazione. Dovresti provare Come abilitare la registrazione degli errori di associazione dell'assembly (Fusion) in .NET per dare un'occhiata a dove .NET sta effettivamente cercando di trovare la libreria e perché scarta quella che trova.
Se non ti porta a risolvere il tuo problema, proverei a disinstallare e reinstallare .NET framework 2.0 e poi 3.5.
Il motivo per cui il tipo di copia locale funziona è perché l'applicazione non tenta di caricare la DLL dalla Global Assembly Cache, ma piuttosto dalla directory eseguibile dell'applicazione. Tuttavia, il tuo vero problema è che non trova la DLL giusta in GAC.
Se Fusion ti mostra che la libreria MySQL tenta di caricare una versione errata di System.Data, puoi utilizzare un manifest dell'applicazione per forzare il caricamento di una versione diversa (che si spera dovrebbe essere compatibile). Puoi leggere i manifesti dell'applicazione qui - http:// msdn.microsoft.com/en-us/library/aa374191(VS.85).aspx
Buona fortuna.