Estimado gasafonso
El colocar muchos controles en tú aplicación (ten en cuenta que existe un límite en cuanto a la cantidad de controles que puedes colocar dentro de una aplicación) o precargar recursos innecesariamente, el no liberar recursos de memoria entre otras cosas son las que hacen que tú aplicación se ponga cada vez más pesada.
Recuerda colocar dentro de tus bucles (For, While, etc) una sentencia DoEvents, esto permitirá al sistema operativo responder en caso entres en un bucle infinito, pero como no hay lonche gratis, el costo de insertar esta sentencia es que tú bucle será un poco más lento.
Configura adecuadamente los parámetros del pre-compilador de Visual Basic:
Barra de Menú Proyecto> Propiedades del proyecto> Pestaña Compilar> Compilar a código nativo
Barra de Menú Proyecto> Propiedades del proyecto> Pestaña Compilar> Compilar a código nativo> Optimizaciones avanzadas...
Trata de repartir de forma inteligente tú aplicación, OjO no todo debe de residir dentro del ejecutable. Puedes y deberías de hacer uso de archivos de recursos residente en DLL, lógica de negocio trasládala a DLL, trata de identificar lo que compone el kernel de tu aplicación y trasládalo a DLL. Carga los recursos externos a demanda, evita precargar recursos en memoria y preocúpate por libéralos de memoria después de usarlos.
El programa al que hace referencia SKL es el compresor de ejecutables UPX, el echar mano de este compresor o de otro similar ayuda hacer un poco más difícil o pesado el trabajo de ingeniería inversa a aquel que quiera craquear tú aplicación.
Saludos desde algún lugar en Lima Perú