It is possible to package a .net application into a single executable file using a concept referred to as application virtualization. It's not the most practical thing in the world, but it is possible.
I wrote some more details about it in response to this post.