SHGetFileIcon läuft ja über eine processeigene IconCache ... ich weiß zwar jetzt nicht wie, aber diese Cache (die SystemImageList) kann man auch irgendwie leeren. (also, wenn dein Programm eine DeviceChangeMessage empfängt)
Danach sollte sie sich neu aufbauen und eventuell jeweils die aktuellen Icons laden.