Q: I verified that my favicon really is an icon, but it still doesn't appear.
A: Since IE loads your icon out of the Temporary Internet Files folder, it must be able to actually store it there.
The original IE6 behavior was to download the favicon once--when a user made a site a Favorite. We want to implement tabbed browsing, and we want the tabs to display the correct Favicons.
I do not want to go too deep into the details of how this craziness works, but the key piece of information to understanding why it seemed so broken is this: a mapping between the url of the site the url for the site's Favicon would be stored in IE's History database and the actually bits of the icon would be stored in the temporary Internet files folder. So I updated the Favicon code to always download the icon on a first visit.
The actual reason why refresh won't work can be found in this question's solution: stackoverflow.com/questions/8616016/…
--- the icon cache is in a sqlite DB file, independent of the browser cache!
The accepted and highly upvoted solution is NOT the real solution.
This answer has not been given yet so I thought I'd post it.
Alex in this answer believes that favorite icons are cached differently than regular web-content, and don't don't follow regular clearing rules.
IE takes great pains to download the icon as few times as possible to reduce load on the server. The simplest solution is just to use Delete Browsing History (on the Tools menu) to clear the cache and the history store. IE7 will download your favicon to the Temporary Internet Files folder and call Extract Icon() on the file.
Q: I put a on my site as you described, but it still doesn't appear. If this fails, we will show the default icon instead of your favicon.