It is probably because something is using your mechanical HDD.
Non-SSD disks can realistically only support one, maybe "one and a half" simultaneous users. More than that and everything becomes dog slow.
Having said that, it's a good idea to diagnose the disk as the bottleneck instead of just guessing. Here's a bit of a technical guide for how to do that.
Computers become slow when one of the resources is bottlenecked. The ones you're most likely to run into are disk, memory and CPU, in this order (IMO).
Start off by making sure you have enough RAM.
While this is less likely to be the problem, I reckon, especially in your case with 8 GB RAM and no heavy RAM users, but it's an easy one to tick off.
A quick check is to start the task manager and check Physical RAM usage. If it's above 80% you may have a problem. If it's above 90% you very likely have a problem.
That was a quick check. A more proper check is to look at the Peak Commit Charge figure. Unfortunately no standard tools show this in Windows 7, so time to pull out Process Hacker:
Peak commit charge is the most memory all the programs have ever wanted allocated at the same time. If it's less than your physical RAM then you definitely have enough RAM for all the tasks executed since boot. If it exceeds physical RAM (as in my screenshot above) then you may run into performance issues due to RAM, especially if you have a mechanical HDD.
Let's assume that you checked the peak commit charge and found it to be around 2-4 GB (unlikely to exceed this after a reboot with the software you have installed). This means the slowness up until now was not caused by too little RAM and cannot be helped by buying more RAM.
So onto the next point...
The next suspect is the mechanical HDD.
Actually it's my first suspect, but the RAM check is easier, so good to get it out of the way.
Before you spend a fortune on an SSD, here's how to convince yourself the HDD is actually the bottleneck. You need to monitor disk load. I like QPerfMon, but the built-in Performance Monitor can do this too.
QPerfMon is a good choice because you'll have to run it immediately after Windows boots, while it's still slow (or even add it to autorun), and QPerfMon lets you pass the right command line arguments to start with the correct "performance counter" pre-selected:
QPerfMon.exe ".\PhysicalDisk\% Idle Time\_Total"
I bet you, from what you say, that it will stay pegged at zero for the 5-10 minutes from boot until your computer starts to feel responsive again. When the computer has finished loading everything it was going to load, the plot will hopefully return to 90-100% (remember this shows the idle time, so 100% means idle and 0% means very busy).
Yes, the HDD stays pegged. What can you do about it?
Unfortunately, relatively little. We've already eliminated the possibility of it being pegged due to low-RAM thrashing. So it's some other software using it. If you have a backup or sync program, it could be the culprit. Anti-virus scanners can easily peg drives. I'm not going to recommend you turn it off, but it can easily double boot times on computers that are already bottlenecked on HDDs.
How do we diagnose which program causes the slowness? My recommended approach is to use Resource Monitor (built-in program in Windows 7). Switch to the Disk tab and sort by Total:
In this screenshot, BTSync is the biggest disk user. Found your culprit? Disable/uninstall it, reboot and try again.
What if the disk is used by System: unfortunately this is quite common and System is often at the top. AFAIK, all programs that use memory-mapped I/O show up as "System". You're going to have to go by the file name and guess which program might be using that file and why. In my example, the file being accessed is from my Firefox profile, so I know the culprit is Firefox.
Do take notice of the last column, "Response Time". For a mechanical disk, you should hope to see this in the range of 5-20. If it's more like 100s then your disk is overloaded far beyond what it can cope with. I bet you that during your times of slowness, the response time is in the hundreds. I've seen mine go as high as 750-1500 before I upgraded my system disk to an SSD.
Repeat this process until you've eliminated all that you can. Third-party services starting after boot can easily be a big problem.
It's quite likely that after you've done all this work, the computer will still be unacceptably slow. That's just how it is, I'm afraid. Mechanical HDDs don't cut it for system disks any more, really. Either put up with it, or save up for an SSD. A defrag is a last ditch effort and can help a little if your fragmentation is horrible, but cutting boot time from 10 minutes to 5 minutes is not necessarily a sufficient improvement...
Disk wasn't pegged during the slow episode
Then it's probably the CPU. I think it's unlikely unless your CPU is very old, or you have misbehaving software. Easy to check: run task manager and check your CPU usage. If the overall figure is above 20% then CPU is a suspect, and if it's above 75% I'd say it's the most likely bottleneck. If it's pegged at 100% then the CPU bottleneck is definitely slowing things down, although it can happen that fixing this bottleneck will only expose one of the ones discussed above.
Run Task Manager, sort programs by CPU usage and disable/uninstall anything that uses too much for many seconds in a row:
Ignore System Idle Process. 19% is not too bad in this screenshot, but it's a potential suspect. If you get something like this, do disable this program and try rebooting without it.
That's about it! Hope this guide helps people get to the bottom of their computer being slow.
P.S. One last piece of advice: when you defrag, make extra sure that nothing else uses the disk. Specifically, pause any backup/sync software and use the QPerfMon method described above to make sure the disk shows >90% idle for extended periods of time before you launch defrag. This should speed it up massively.