Risposte:
l() consente anche l'HTML, devi solo passarlo come una delle opzioni:
$link = l($image_html, $path, array('html' => TRUE));
Ciò interromperà il passaggio del primo parametro check_plain(), quindi l'intero HTML che passi verrà inserito nel <a>tag.
Ti consiglierei di usare questo metodo se l'alternativa sta scrivendo il link manualmente, ottieni il vantaggio della traduzione automatica dell'alias ed è meno incline a piccoli errori nell'HTML (di cui io per primo faccio sempre un carico).