There are apps out there that are known as .NET linkers. These will actually package up the .NET libraries with your app to run without .NET installed at all on the target machine. There are issues with this, because if Microsoft puts out a fix for something in the .NET framework then you would never get that fix. Also since the framework is embedded into your app, the app itself is larger. Plus you do not benefit from the .NET dlls being in memory already since it is embedded into your app.
Personally, I am leary of these types of apps especially since they are very expensive.
Here are some examples:
http://www.remotesoft.com/linker/[
^]
http://spoon.net/Studio/[
^]