For the worst case scenario, if the computer fails to respond. You could take a basic stamp processor:
See:
http://www.parallax.com/
1) Have the "pinging" program toggle a bit on and off on a serial or parallel port
2) Write a program for the stamp processor to watch for the bit to go on and off, If it doesn't enable the reset on the motherboard to the PC.
This would be in hardware and work independent of the computer.
Use the same approach (setting a value to 1 then 0 on a timer) in software with a Perl script or something and reset the application with the script should the application fail.
If this is a network service, you still should be checking externally to see if clients can connect and interact with the service.