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.