La razón por la que se lanza la excepción tan pronto como ingresa el método es simple:el compilador JIT solo necesita resolver las referencias en ese momento. MySqlConnection requiere System.Data, y es el primer método para hacerlo, por lo que es cuando se lanza la excepción.
En cuanto a la depuración del problema, parece que .NET Framework no se instaló correctamente en la máquina de destino. Debe probar Cómo habilite el registro de fallas de enlace de ensamblado (Fusion) en .NET para echar un vistazo a dónde .NET realmente está tratando de encontrar la biblioteca y por qué descarta las que encuentra.
Si no lo lleva a resolver su problema, intentaría desinstalar y reinstalar .NET Framework 2.0 y luego 3.5.
La razón por la que la copia local funciona es que la aplicación no intenta cargar la DLL desde la memoria caché de ensamblaje global, sino desde el directorio ejecutable de su aplicación. Sin embargo, su verdadero problema es que no encuentra la DLL correcta en GAC.
Si Fusion le muestra que la biblioteca MySQL intenta cargar una versión incorrecta de System.Data, puede usar un manifiesto de aplicación para obligarlo a cargar una versión diferente (que con suerte debería ser compatible). Puede leer sobre los manifiestos de aplicaciones aquí:http:// msdn.microsoft.com/en-us/library/aa374191(VS.85).aspx
Buena suerte.