La pregunta es: por ejemplo yo tengo un sistema y le invito a otro programador que se una al proyecto que tenga todo el código a su disposición, pero no quiero que lleve mi código.
En ese caso tenes que crear algo (una interfaz, dll, etc..) que exponga lo necesario para que el programador pueda programar

como lo es windows, nosotros en vb programamos para windows sin saber su codigo fuente, como? A travez de herramientas (vb, API's, otros codigos) bueno, lo mismo se aplica. Solo que para el creador principal se hace mas largo (por no decir el doble de trabajo xD)
Una opción seria la creación de "plug-ins", se adapta perfecto, todo depende del programa

Otra es invitarlo a programar en vivo y en directo en frente tuyo y sin la posibilidad de llevar el codigo :xD
este tema es interesante... pero he de decirles algo: el código de Visual Basic (aparentemente) resulta vulnerable y relativamente facil de "romper"
(obtuve esa información navegando por ahí como dicen), se que a opinión de algunos "gurús"
de 'C', nuestro querido y amado lenguaje, es bastante vulnerable. Y parece que en .NET, corre la misma suerte (no estoy seguro).
Hace unos años (no muchos), cuando probé la primera versión .NET, me dí cuenta, que en la suite, la parte correspondiente al 'C#' había un módulo (no me acuerdo el nombre) con el cual se podía ver completamente el código de un .EXE !!! (me quedé con la boca abierta) hice la prueba con ejecutables de VB 6.0, y se podían reconocer las instrucciones puestas y las posiciones que ocupaban !!! (mas o menos recuerdo eso), de vai... no quedé traumatizado !!! 
Me pregunté en ese entonces (y tiempo despues, hasta el día de hoy !!!) como caraj... proteger o blindar el código !!!
Lo que tu viste se llama ILDasm ("IL Disassembler" para los que nunca lo utilizaron) y viene con el .net framework, puede ver el código compilado (en MSIL; un lenguaje creado para los ejecutables en .net framework). Una técnica similar usaba el .Net Reflector que ahí si podías ver el código en cualquier lenguaje que soporte .net (aun si no fue programado en varios lenguajes; ej, programabas en C# y podías verlo en vb.net) Aunque nunca lo probe con ejecutables de vb6
Lo que usan hoy en día, son ofuscadores, que ahí si no te pueden ver el código por esos medios. Uno que viene con el visual Studio es ".Net Fuscator Comunity Edition" (o DotFuscator, no recuerdo bien) pero nunca lo supe usar bien jeje