色々な方法が考えられます。たとえば、System.Windows.Forms.Application.Restartメソッドを使えば、再起動することができます。この場合であれば、起動しているプログラムのファイル名をリネームしてから、新しいプログラムをコピーしてからRestartメソッドを呼べば新しいプログラムが起動されます。
同一プロセスで行うのであれば、以下のような方法も考えることができます。
1.起動用のディレクトリーへexeをコピー
2.起動用のディレクトリーから起動
3.インストール場所へ新しいexeを置き換え
4.再起動で1、2を行う
この方法は、シャドウコピーなどを使っても可能です。要は、起動用のexeとアプリ本体とを別プログラムにすることです。
別の方法としては、ClickOnceを使う方法などもあります。