One of the more annoying things with having a "smart phone" is when its not uptodate with all your stuff. A few weeks ago I wrote an AppleScript to sync my iPhone nightly at 3:00am every day.
Copy this script into the AppleScript editor, and save to a location on your harddrive.
tell application "iTunes"
repeat with s in sources
if (kind of s is iPod) then update s
end repeat
end tell

Next step is to download and install
Lingon and setup a launchd configuration to schedule your nightly iPhone sync. Here are the settings I used:

Save your launchd configuration, logout and log back in - and enjoy!