I've written long posts about this before, and it caused me to write my program VJBrisk.
The way to do it is to create an Icon DLL, and then use modified shortcuts pointing at custom icons in the dll. This will speed up boot time, start menu population, SmallMenu/GSPocketMagic etc, and prevent blank icons loading from SD Card.
I recommend downloading Microangelo on the PC.
Load your target icon .exe into Microangelo librarian.exe.
Click each (or all) icons, and save as .ico.
Modify icons if necessary in Microangelo Studio.
Next, (easiest way) is to start with the PHM Icon library dll. Load into librarian. Rip out all existing icons (optional). (Harder way is to create a blank resource dll in Visual Studio etc).
Drop in your extracted .ico files.
Save the dll, copy to PPC, and smile.
For hints (for beginners) on modifying shortcut icons for files and folders, search against my username for the word "completeness".
I do this for my today screen icons.