The only way Ive been able to do it, was using straight VB - the Tool palettes seem to be "container" controls, like a form, that other "controls" are dropped on. I compiled code to an activex control (.ocx) and loaded it onto a palette from there.
FYI: I havent seen the 2009 version of the tool palette, at least usable in VB.
For now, Im using a VBA form, tweaked using the API, that has the look and feel of a tool palette. The benefits are that you have faster development times (because all code is written in handy VBA, instead of having to go back to VB and recompiling your OCX), and the downsides are that your VBA Form code is already loaded up with source before you even start a new project.