Sounds like you have either a very full drive and/or needs defragmenting. Or, the drive is failing.
Best thing here is first make a good backup of your stuff, then create if you don't have one presently a bootable external drive. Ideally a FireWire unit but a USB will work as well. Download if you don't already have it the OS installer, then run it selecting the external drive. Once done you should be able to boot up under it by holding down the Option key when the system boots up.
Now with the external drive as your boot drive you can run Disk Utility from the external to check your internal drive. If it comes up clean then you'll need to defragment your drive (jump down to next section). Otherwise, you may need a new drive. I would recommend going with a SSHD hybrid drive like this one: Seagate Desktop SSHD. I'm sure the 1 TB drive will be more than enough space. Here is the IFIXIT guide you'll need to follow: iMac Intel 21.5" EMC 2308 Hard Drive Replacement. You'll also need this: OWC In-line Digital Thermal Sensor for iMac 2009-2010 Hard Drive Upgrade to replace the needed thermal sensor.
OK, the drive came back good!
To start off you'll likely need to do some house cleaning removing the old cache & log files. A good tool for this is this one: Disk Doctor which you can get off of the App Store, there are others that will also do the job. The next thing is cleaning off any of your junk as you do want to free up as much space as you can (try to get 1/4 of the drive or better free). Now the fun part defrag! I use this app: Drive Genius, again there are others. Once you run it on your HD the performance of your system will be back.