|You really can't get around that.
There is a tool that generates native code from the IL code in the assemblies, but, you can't just NGEN your assemblies and then distribute those to your customers. NGEN generates code speicifically for the processor that it's running on. So, if you NGEN an assmebly on an Intel Core 2 Duo, the resulting native code isn't guaranteed to work on an AMD Athlon 2600+. NGEN has to be run on the assemblies at installation time on the customer workstations.
Also, don't expect to get large performance boosts in load times. When an assembly is loaded, the native compiler does a very good job at compiling the code down to native and does it very fast. The .NET CLR will also not compile an entire assembly, but only what it needs to compile to run the current code. If you create an instance of a class in, say, a .DLL, that class won't get compiled into native code until your code first tries to create an instance of the class. The compiler works on a on-demand basis.
Now, if you go the other route and use an expesive third party product to build the .NET Framework into your .EXE, you still have an IL .EXE which will be compiled on-demand, but now you have a MUCH larger .EXE file, which will take longer to load anyway.