After I commit files, the icons stay on either modified or waiting for commit for a long time. Is there any way to force a refresh to ensure that the icon that I am seeing
Go to the directory under which you want the icons to be updated. Right click on that directory with your mouse and in the SVN context explorer menu select 'cleanup' and then press F5. It should refresh all SVN icons under that directory for you. It did for me.
I work on a huge project with thousands of files and a SVN 'cleanup' is very fast on my computer so I do it at the root level for the most part, thus refreshing all icons. For slower computers without much memory a full cleanup for a big project might take a while. In that case you can refresh just the directory you need.
Someone says above that a 'cleanup' will revert your local changes but that is not necessarily true. It does not revert for me... Furthermore, I do not think it's an option you should enable. Sometimes your local SVN caches get corrupted and a cleanup will fix them for you... that being often a necessity in order to do your commits, etc...
Hope it helps.
PS. My tortoise SVN version is: TortoiseSVN 1.6.16, Build 21511 - 64 Bit
Building upon noodle7's answer: another option is to change:
TortoiseSVN -> Settings -> Icon Overlay, set Status Cache to 'Default' instead of 'Shell'
This worked for me. TortoiseSVN 1.9.