I agree with the recommendation to drop from 16GB to 8GB of memory and save the cash unless you have some specific use that you know you are going to need more than 8GB (Like you want to run 6 VM's with 2GB each or something).
Just a note, you are running a single monitor at 1920x1080. I have near the same machine (i5-3570k, 8GB, same mobo) running at 1920x1200 on a 7850 and haven't really noticed any performance problems. The 7950 or 670 are generally going to be about 20% faster, on about 11% fewer pixels . . . and I usually run at 8xAA, 8xAF, on somewhere near the highest settings in any games I play . . . I'm sure you'd be happy with either.
I would recommend you take a few bucks and get a small SSD and turn on SRT. It really makes the machine feel snappy like you were running off of an SSD in most cases, but doesn't have all the hassle of managing multiple drives. Going with the 8GB of RAM and 7950 over the 670 would save more than enough cash to get a 60/64GB SSD which should mean most of your recently used stuff will be cached an load nice and fast.