LAst time I checked (around version 2.5), the most that could be done in order to customize Blender's UI through Python was to add some custom Panels
(with buttons and controls) in a given view.
Is it still the most that can be done now in 2.65?
Still no way to put those panels at arbitrary coordinates on screen, detach them, expand them, replace standard panels with custom panels, hide some buttons on standard panels, what-not?
there are still no floating panels, but there was a GSoC project this year with some working code for it. But iirc it won't make it into trunk.
all panels can be collapsed / expanded and moved by mouse to change their position in sidebars.
Most panels are scripted, so they can be changed, you could e.g. hide buttons.
I'm sitting, waiting, wishing, building Blender in superstition...