Respuestas:
l() también permite HTML, solo necesita pasarlo como una de las opciones:
$link = l($image_html, $path, array('html' => TRUE));
Eso detendrá el paso del primer parámetro check_plain(), por lo que el HTML completo que ingrese estará envuelto en la <a>etiqueta.
Aconsejaría usar este método si la alternativa es escribir el enlace manualmente, obtiene el beneficio de la traducción automática de alias y es menos propenso a pequeños errores en el HTML (de los cuales, por mi parte, siempre hago cargas).