You might find it useful to look at the code generated by the Plugin Builder plugin, especially the add_action() method it generates, which is what hooks plugin icons into toolbars and menus.
This snippet looks promising...
if add_to_toolbar:
self.toolbar.addAction(action)
You already found out how to get the existing action
(a QAction object). Now you just need the snippet to get the toolbar you want to add the icon to.
Looking at the API for qgisInterface it seems there's already a method to let you create a toolbar...
myaction = qgis.utils.iface.mapNavToolToolBar().actions()[0]
mytoolbar = qgis.utils.iface.addToolBar("helloworld")
mytoolbar.addAction(myaction)
Just tried that in the console and it works. (If it doesn't appear, right click on the toolbar background and make sure 'helloworld' is checked)
EDIT
Just realised you want to glom onto an existing toolbar, which you haven't created yourself.
QgisInterface
extends QObject
, which has a findChild(type,name)
method. However, running this from the console returns an empty list
print qgis.utils.iface.findChildren(PyQt4.QtGui.QToolBar,u'helloworld')
>>> []
Hopefully someone with more Qt knowledge can answer this. I think there may be an issue with reading data like this across threads :/