Recommended DNS TTL
I tend to leave it at Slicehost's default, 86,400 seconds (1 day). I drop it down to 10 minutes when I have a move pending and wait a day or two.
edit: These days (2016) I tend to keep it low - ~5 minutes.
The standards recommendations (written a long time ago in 1987) suggest 86,400 seconds (1 day) as the minimum default TTL.
It is important that TTLs are set to appropriate values. The TTL is the time (in seconds) that a resolver will use the data it got from your server before it asks your server again. If you set the value too low, your server will get loaded down with lots of repeat requests. If you set it too high, then information you change will not get distributed in a reasonable amount of time. If you leave the TTL field blank, it will default to what is specified in the SOA record for the zone.
Most host information does not change much over long time periods. A good way to set up your TTLs would be to set them at a high value, and then lower the value if you know a change will be coming soon. You might set most TTLs to anywhere between a day (86400) and a week (604800). Then, if you know some data will be changing in the near future, set the TTL for that RR down to a lower value (an hour to a day) until the change takes place, and then put it back up to its previous value.
Also, all RRs with the same name, class, and type should have the same TTL value.
See RFC 1033: https://www.rfc-editor.org/rfc/rfc1033
RFC 1912 (from 1996) suggests that 3 days may be more appropriate for SOA
records.
http://www.ietf.org/rfc/rfc1912.txt