I often use my Galaxy S3 with a smart dock plugged in to the TV with a PS3 controller using the Sixaxis app. It works pretty well, as the Sixaxis app allows mapping buttons and analogue sticks to touchscreen controls on a per-app basis. Additionally, XBMC and some games work natively with the controller (the only bad thing about XBMC on this device is that it can't output 5.1 -- likely a hardware limitation).
It's quite disappointing trying to navigate most other apps though. While the Sixaxis mouse control does work with practically everything that only needs single touch (anything can be installed, of course, as the phone has a touchscreen so isn't limited in Play store), it's a bit clunky. There is a lot of variance in the Google apps and other 3rd party apps as to how a native controller functions. Many (most!) apps don't even let the screen scroll up/down using any of the direction controls.
Another odd example would be the "Share" option for Hangouts. I select "Share" in an app, then I can use the D-Pad to select which app I want to share with. I select Hangouts with the Square button (mapped to "A" on a native controller), and it lists which Hangout accounts I can share with. I can scroll up and down the list with the D-Pad, but for some reason the controller button to select items won't select an item from this list with the Square button, and I have to click on it with the mouse instead.
I'd really like to see more apps allow basic navigation with controllers without resorting to mouse emulation. Surely this would be required for Google TV and Android consoles, as well as potentially providing a basic fallback interface for small touch screens where you may not be able to touch individual elements (e.g. swipe up sends an "Up" command, tap sends an "A" command).