Replace entity icons
One of the most prominent remaining areas of image icons is the icon for each entity that appears in the recent items block and next to contact names. These are also among the more hideous icons.
There are three parts to this: identifying replacement icons in Font Awesome, providing for configuration of contact subtype icons, and replacing the mechanism of providing and displaying the icons.
Identifying replacement icons
This might be tricky given the limited set of icons in Font Awesome 4.7, but it's self-explanatory. A good first start would be to use the icons on the tabs in the contact record.
Providing for configuration of contact subtype icons
Site admins can pick an icon image for contact subtypes, or by default they appear as grey versions of the corresponding contact type. I don't think it's realistic to retain the images, but it will be important to offer site admins the opportunity to pick an icon. A natural way might be an icon picker similar to the ones that appear elsewhere.
Replacing the mechanism of providing and displaying the icons
CRM_Utils_Recent::add() adds things to the stack of recent items. Among them is an
$others array that has details like the image URL.
It's called from places like here where the contact type icon's image URL is pulled from
CRM_Contact_Page_View::getContactDetails() which, in turn, calls
Most of these functions will need to be reworked to pull the icon class name and pass it along. In the meantime,
CRM_Contact_BAO_Contact::getDisplayAndImage() should probably be reworked to use the API since it's just getting basic things.