Other hints, such as this one, describe how to keep an application alive using launchd. problem with this technique is that applications (re-)started this way inherit launchd's environment, not the user's, and so don't include any environment variables defined in ~/.MacOSX/environment.plist
If that's a problem for you (it is for me), then you can include those variables by launching the application indirectly, from a script which parses the environment.plist before invoking the application. Save the script below to a file called LaunchWithToplevelEnvironment.sh (or whatever you like) in ~/Library/LaunchAgents, then make that script executable (chmod a+x script_name):
Mac OS X Hints
http://hints.macworld.com/article.php?story=20081016073426245