As I mentioned Microsoft offers ILMerge but if you do not want to use a 3rd party application this is how you would code it yourself. Your client will still need the .Net Framework but it will allow you to hide your dependencies. If you want to include .Net dlls as well you must set your references to "copy local" in the references setting.
This program requires that you add your dll as a resource. Whenever your program requires that dll it will load it on demand by use of the assembly resolve hook. If you had multiple dlls you would have to have a switch case or a list look up that loaded the correct dll based upon ResolveEventArgs.Name.
Module Program
''//Entry Point add dependency resolver hook
Sub Main()
AddHandler AppDomain.CurrentDomain.AssemblyResolve, _
AddressOf AssemblyReslover
End Sub
Private Function AssemblyReslover(ByVal sender As Object, _
ByVal e As ResolveEventArgs) _
As Assembly
''//ReferenceAssembly
Dim ra As Assembly
ra = Assembly.Load(My.Resources.MyDLL)
Return ra
End Function
End Module
http://support.microsoft.com/kb/837908