I created a batch file that checks if cgminer is running. If cgminer is running then the script exits, if it is not running it launches it.
if "%ERRORLEVEL%"=="0" GoTo Eof
start cmd.exe /c "C:\
Launcher.bat is simply the batch file that I use to launch cgminer in the first place. If you use a different miner and have a similar problem you can just change the executable name in both places of the first line.
I could make a scheduled task to just run this on a regular basis (every 5 minutes or something) but instead I have a scheduled task that runs this only in the event of an application crash event in the event log. Since the event log only specifies the crashing app in the details, any crashing application will cause this to run which is why it needs to check for cgminer running first in case some other app is what crashed. Generally though my miners are dedicated and nothing else is happening on the box so an even log event of 1000 in the application log should always be a cgminer crash for me.
Also, depending on how your mining app is crashing and whether or not you have error reporting on you may want to see this: http://stackoverflow.com/questions/4528697/how-to-immediately-terminate-crashed-application