SOAP RetrieveResources could be a good solution, but throws a NullPointerException for me on BW 5.4. Maybe it is a bug in this version.
The problem regarding getting a root path is that a deployed BW project does not keep its original folder/file structure - the deployer will not explode the EAR file. Therefore you won t find the image as a separate file on the BW server box.
There is a simple way to dynamically load XML files, by using the following XPath statement:
tib:render-xml(document( tibcr://path/to/file.xml ))
but it will obviously fail on binary files. My best guess for storing binary data inside a BW project would be to store it as a string constant in Base64 or Hex format.