What could be preventing my backup script from running?
I would first convert the printf statements to logger -p user.info statements since they are easily observed in the console app (and syslog) whenever the script runs.

You could also make a second script that just logs test messages or creates empty files /usr/bin/touch /tmp/test.$$.log to determine if your script above is the culprit or the Power Manager tool you are using is not reliably launching the script.

Also, you could try using an app like Lingon to have launchd start your script. The system uses that facility to run itself, so it' highly reliable and logs failures well if you ever need to troubleshoot a problem down the road.