Delphi is a good tool for creating a native executable like this. This app could read the Registry to determine if .Net (and the required version) is installed, and kick off the installer if necessary, and then start your .Net app after the installer is done.
However, having been through this a number of times, I can assure you that this just isn't worth the effort, especially if your app is still .Net 2.0. Most PCs in the world already have at least this much installed, and it's a lot easier to just include the .Net redistributable on your application's install disk (or provide a link to it on your website) along with instructions on what to do if the user starts your application and gets a message box that says "This application requires .Net 2.0. Please install .Net 2.0" or whatever it says.
In my experience, clients tend to worry about this scenario way too much. If a user can't handle installing .Net, you're going to have other problems with them. If your app requires .Net 3.5, you might have some serious problems, since the installer sometimes fails with the helpful message "SETUP Error" (and nothing else [!]), but this will be a problem for you no matter what.