One thing you havent mentioned was if this phone is stock or has been rooted and/or flashed with a custom Rom. More often than not, a custom Rom can cause this issue in many phones. Even in the same model (all phones are not created equal). But whether it's stock or custom I would give this proceedure a try as outlined by James in another thread.
Step 1,
download and install kies (not kies mini)
step 2, pull your battery and write down your S/N (not your IMEI number but the serial number)
step 3, start kies and then turn the phone on and go into download mode (hold volume down, when prompted press volume up)
step 4, let the drivers install
step 5, once all that is done, in kies, Choose
Tools,
Firmware upgrade & initialization
step 6,
a) While in download mode, enter the S/N & model name (ALL CAPS!! SGH-I717 not SGH-i717)
b) It will prompt to initialize to original settings. Click "YES"
c) It will prompt to initialize the latest version. Click "YES"
d) It will download the firmware upgrade components (DO NOT DISCONNECT THE DEVICE!!)
Setp 7, Kies will prompt for firmware upgrade and initialization.
a) Click check box for reading above information
b) Click your choice if you want your information saved on Samsung Kies corporate servers (I choose
WITHOUT saving).
Now walk away from your phone for 15-20 minutes. When you get back your phone will be 100% stock and on the official ICS
Original credit for this here:
http://forum.xda-developers.com/showthread.php?t=1731654
If a new battery takes care of the issue, great. If not try this. If neither work then you may be looking at a problem with the hardware itself. good luck and let us know how it turns out.