I was incorrect - some user interface functions which allow arguments allow the ?itemIcon to be specified as a file name (I've used them for buttons or toolbars for example), but if I do:
item=hiCreateMenuItem(?name 'cadence ?itemText "Cadence" ?itemIcon "/tmp/cadence_logo.png" ?callback "println(\"Cadence\")")
hiCreatePulldownMenu('testMenu "Test" list(item))
hiInsertBannerMenu(hiGetCIWindow() testMenu 10)
*Error* length: argument must be a list or an array - "/tmp/cadence_logo.png"
Reading the documentation for ?itemIcon for hiCreateMenuItem it says:
List representing an icon menu item. The icon occupies the icon area on the left of the menu item, and the text (specified in t_menuItemText) is displayed alongside. Menu icons can only be 16x16 pixels in size. If the icon is larger than 16x16 pixels, it will be shrunk (which is why only 16x16 icons are recommended for the menu items). See Specifying Icons for hi Functions in Chapter 7 for information about how to specify an icon as an argument.
So you are limited to 16x16 icons for menu items.