Ciao
oggi come oggi proteggere al 100% un SW immagino tu sappia sia impossibile ( disassemblatori, reverse engineering, etc ... )
Indubbiamente il primo passo è fornire una versione precompilata della tua applicazione, puoi anche sfruttare le funzionalità di Publish di Visual Studio per effettuare direttamente la copia sul provider. Questo eviterà di fornire i files vb ( o cs ) insieme al markup dell'applicazione
Trattandosi di codice managed ( ovvero non tradotto il linguaggio macchina ) tornare al codice scritto da te non è cmq un'operazione da geni dell'assembly. Per questo motivo ( se ritieni il tuo codice così interessante da voler essere rubato e se pensi che il problema sussista ) esiste uno strumento detto Dotfuscator che dovrebbe proprio riscrivere il tuo codice per renderlo ( uso il condizionale perché non l'ho mai utilizzato, in ogni caso qui
http://msdn.microsoft.com/it-it/library/ms227240(v=vs.71).aspx
dovresti trovare le info necessarie )
spero di esserti stato utile
Ciao