First off, thank you! Secondly - I'm sorry I'm just now seeing this post (2 weeks later) guess I'm not getting these support posts in my email anymore :( Will have to look into that.
To your question.. UserAgent sniffing does indeed have it's caveats; agent strings change all the time, new ones are introduced, sometimes they are no completely accurate... and so on. However, at this time that is the only reliable method for detecting what device a user is on. The only other method is to detect the user's device width. Which is even more problematic.. for instance the iPad 3 resolution is larger than my desktop monitor :\
Device Theme Switcher uses the MobileESP library to ascertain the users device based on the UserAgent String in the users browser. And I've found that the library is usually up-to-date, and does a great job of determining oddballs like Opera browser which has a nearly identical UserAgent on desktops and handhelds.
Until it's mandatory for devices to identify themselves in a simpler mannor these are the methods we're stuck using. Let me know your thoughts!