Windows explorer will try to read all drives attached to your system. This can include printers, USB drives attached via the internet and many drives that are empty, such as floppy discs, CD, DVD, USB sticks not plugged in and so forth.
Some of these will not respond and there is where the problem can lie. An obsolete or poorly-written driver for a device you do not have connected at the time may fail to time-out quickly, hence the horrible delay.
For this problem, all I can suggest is a very careful check of every device on your system to update to the latest driver.
However, as hughva suggests, a corrupt file system or bad blocks is also a likely cause. You MUST run chkdsk /f on every drive, including all USB attached drives. You SHOULD run basic hardware tests on all drives also. For hard disk drives, you can download the manufacturers test suite which will test for bad blocks. I'm sorry, that will take hours, but you NEED to do it.
The fact that you can run programs really suggests the problem lies not with your basic HDD, but some other device that Windows explorer will display when it is started. I suggest you patiently wait until explorer starts, then close the drives displayed (click the [-] box against every drive). Then one by one, click the drive name. All the folders at the root of the drive should display within seconds, or if the removable drive is empty, you should get an almost instant prompt to 'please insert a disk into drive ...'
When you dont get that, you are well on the way to a solution.
Also check out this post
https://www.techspot.com/vb/topic154815.html several parts of which may eventually have a bearing on your problem.