I think you can do it using normal SetItem method.
Provided you have an CImageList member variable called m_imgOrder in your class populate it with your icons. Image 0 will be your ascending icon and Image 1 will be a descending one.
m_imgOrder.Create(16, 16, ILC_MASK, 2, 2);
m_imgOrder.Add(hIconAsc);
m_imgOrder.Add(hIconDes);
GetHeaderCtrl()->SetImageList(&m_imgOrder);
This function will draw your own icons from the Image list you have created:
void CMyListCtrl::DisplayHeaderOrder(int nIndex, BOOL bAsc)
{
HD_ITEM curItem = {0};
curItem.mask = HDI_IMAGE | HDI_FORMAT;
GetHeaderCtrl()->GetItem(nIndex, &curItem);
curItem.mask = HDI_IMAGE | HDI_FORMAT;
curItem.iImage = bAsc ? 0 : 1;
curItem.fmt = HDF_LEFT | HDF_IMAGE | HDF_STRING|HDF_BITMAP_ON_RIGHT;
GetHeaderCtrl()->SetItem(nIndex, &curItem);
}