Мне казалось это достаточно ясно.
1) Копируем компонент bitrix:menu.sections в собственное пространство имен.
2) Вносим изменения в копированный компонент
2.1) Примерно на 45 строчке в CIBlockSection::GetList добавляем изображение в select и в блоке while делаем проверку - если изображение есть - получаем его url, если нет - прописываем url к загрушке
2.2) примерно на 128 строчке, в блок:
$aMenuLinksNew[$menuIndex++] = array(
htmlspecialcharsbx($arSection["~NAME"]),
$arSection["~SECTION_PAGE_URL"],
$arResult["ELEMENT_LINKS"][$arSection["ID"]],
array(
"FROM_IBLOCK" => true,
"IS_PARENT" => false,
"DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
),
);
Наравне с параметрами FROM_IBLOCK, IS_PARENT добавляем свой параметр. Например IMAGE_PATH, куда и заносим изображение из 2.1
3) В .catalog.menu_ext.php подменяем вызов на свой компонент
4) В шаблоне menucat компонента bitrix:menu проверяем параметр и работаем с ним.
Как пример - можно посмотреть вопрос того же тостера:
Как добавить свои классы всем пунктам меню bitrix?