A snapshot is great for these scenarios where you might have used a database backup in the past:
- before doing database schema upgrades
- before running adhoc data manipulation queries
- maintaining a historical snapshot you might want to analyze later
- materializing data on standby servers
In some of the above scenarios, a transaction is a better option to automatically roll back from problems, but there are sometimes cases where the query might succeed but have unintended/unforeseen consequences, so a snapshot is a good standby option to revert a bad SQL script. Of course, if this is a live system with commits occurring actively, then you wouldn't be able to go back to the snapshot without losing any commits that occurred since the snapshot was made(another reason transactions are better protection when running sql scripts against a live system).
Since the snapshot occupies less disk space, and are faster to create than a backup, they are a better option than backups in these cases.
You would still use traditional database backups to protect against disk array failures, malware, natural disasters, etc.
http://www.simple-talk.com/sql/database-administration/sql-server-2005-snapshots/