Warning: this method is only available to devices running Ice Cream Sandwich or higher and it has bugs, but it is an alternative for folks who want to make a backup before rooting their device.
You'll need to have the latest adb installed and in you path, USB debugging enabled and your phone connected to your Mac.
The command in question has the following format:
adb backup [-f <file>] [-apk|-noapk] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]
Here are some common uses:
1. Backup all non-system apps, their data and your shared data (i.e. SD card contents):
adb backup -f /path/to/backup-file -apk -shared -all -nosystem
2. Backup all apps, their data and shared data (note: won't work on DRM protected apps):
adb backup -f /path/to/backup-file -apk -shared -all -system
3. Backup only app data (not the APKs themselves) and your shared data:
adb backup -f /path/to/backup-file -all
4. Backup only non-system apps:
adb backup -f /path/to/backup-file -apk -noshared -nosystem
5. Backup only your shared data:
adb backup -f /path/to/backup-file -noapk -shared -nosystem
6. Restore everything from your backup:
adb restore /path/to/backup-file
During backup your phone will display a backup confirmation screen giving you an option to enter an encryption password. In my case it would only work with non-empty password, otherwise it would generate a zero-sized file.