Hi Clem,
I had exactly the same problem, tried lots of things but just couldn't get it to work so did this as a workaround.
As I had space constraints, if the link text was too long, it would start aligned central to the image, but then the 2nd line of text would wrap under the image and look horrible.
I created a table, 2 columns. Put the image in cell1, and the link in cell2, rather than including the image as part of the link.
Not ideal, but I needed it done quickly and this was the quickest and easiest way I could think of at the time.
Not sure if this helps you at all?
<xp:table>
<xp:tr>
<xp:td style="height:40.0px;width:65.0px">
<xp:image url="/RandomImage.jpg" id="RandomImage"></xp:image>
</xp:td>
<xp:td style="height:40.0px">
<xp:link escape="true" id="RandomLink"
style="font-weight:bold;color:rgb(95,95,95)"
text="Random Text">
<xp:this.value><![CDATA[#{javascript:"Notes://[LINK]";}]]></xp:this.value>
</xp:link>
</xp:td>
</xp:tr>
</xp:table>