Using a TTL of 10 seconds, like what Trademe has, doesn't guarantee that, if you change the IP address, it will take only 10 seconds for clients. For example, Internet Explorer will cache the DNS entry for 30 minutes, no matter what was in the TTL (previous versions, <3.0 cached it for 24 hours!). You can change this with a registry key but I doubt anyone does that.
http://support.microsoft.com/kb/263558 confirms that. Do you have any details on IE 7? This document was written 27/01/07, but doesn't mention IE7.
Though, using a lower TTL here helps a bit, because the client's ISP's recursive resolver won't cache it for too long, meaning switchover is 30 minutes + 10s max, not 30 minutes + $higher_ttl.
code based on the mozilla codebase (firefox, thunderbird, seamonkey etc) all appear to by default cache items for a minimum of 1 minute. This means that they can at least load all the files associated with a single page load with one DNS query rather than performing one lookup for each stylesheet, image, etc... Using 0 as a TTL has a bug in some resolvers[1] that the entry will be expired before its used thus generating an infinite stream of DNS queries. Other implementations use 0 or -1 for "never expire" for entries, which may cause the exact wrong behavior. This is perhaps not very widespread in webbrowsers, or recursive nameservers so it may not be an issue for www sites. Some Bind versions will use the minimum ttl listed in the SOA if the TTL of a record is given as 0. [rfc1536 section 5]. Presumably it only knows the SOA when it's the primary or the secondary nameserver. [1] mumbleoldircmumble.