It's the only way I know to do it, but I used a BAT file instead of creating a second EXE.
Put this in the event that exits your program. Do not put it in the form terminate or deactivate event, as it will not work there.
' write the bat file to erase the .exe
Dim Killpath As String
Dim fso, MyFile
Killpath = App.Path & "\Yourprogramname.exe"
Set fso = CreateObject("Scripting.FileSystemObject"

Set MyFile = fso.CreateTextFile("C:\Killit.bat", True)
MyFile.WriteLine (":START"

MyFile.WriteLine ("del " & Killpath)
MyFile.WriteLine ("IF EXIST C:\Killit.exe GOTO START"

MyFile.WriteLine ("del C:\killit.bat"

MyFile.WriteLine ("EXIT"

MyFile.Close
SH = Shell("C:\killit.bat", vbHide)
End
This writes a simple BAT file and then shells it out just before the program ends. The BAT file will try to delete the EXE file. If it is succesful, it then deletes itself and then exits. If it is not succesful at deleting the EXE ( because the EXE has not finished closing yet, and can't be deleted ), it will loop around and try again and again until it does finally delete the file. This only takes a second or two, and it is hidden from the end user.
If your application is always going to reside in the same place ( the app path is always the same ), you can simplify the code a bit.
HTH
Robert