There are a couple options. One is to use clickonce or write your own self updating application that once it starts it checks to see if a new version is released. There is a good overview along with some code for the later here. There are lots of articles on MSDN that will explain click once.
If you have divided your application up you can create a new solution that is a custom updater. Add the project(s) that you need to update to that solution as well and then all you would need to do is have your updater do a few things:
1. check to make sure the program isn't running
2. find out where the file is that needs to be updated
3. delete the old file (or mark it with the .old extension in case the update fails)
4. copy the new updated file to the same location as the old one
5. clean up any old files and close the updater
It sounds easier than it is, but it's not really that hard either.
If your application is only one file though (a .exe) and no dlls or supporting files, you just need to re-release it because technically that's the update.
Patching is different than updating, but are kinda the same result. Patching is way over my head though. But it can be done, I think there's a way to make installer files that only patch existing installations, but I'm not sure how to do it.