You can set this up using launchd. Specifically, you need to use the watchpaths key in your launchd plist to look for changes in that file.
Exhaustive information available in this AFP548 article.
Although it appears it's no longer under development, Lingon is an application providing a GUI way to set up these launchd plist files.
EDIT:
Roughly, here's what you'd do using your sample paths above. Save a file named com.superuser.run-pdflatex.plist
with the following contents to ~/Library/LaunchAgents
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.run-pdflatex</string>
<key>OnDemand</key>
<true/>
<key>Program</key>
<string>/Users/foo/run-pdflatex.sh</string>
<key>ProgramArguments</key>
<array>
<string>run-pdflatex.sh</string>
</array>
<key>WatchPaths</key>
<array>
<string>/Users/foo/doc.tex</string>
</array>
</dict>
</plist>
Then you'd type launchctl load ~/Library/LaunchAgents/com.superuser.run-pdflatex.plist
in the terminal to load your file-watching daemon.
Above is untested, but that's the general idea.