first off, your system is not a piece of crap! Its way better than what I used to have for gaming(the gpu being the exception).
keep your current cpu its more than good enough for bf3.
and as for your psu, a corsair cx500/tx650 should be enough depending on the graphic card your getting. SInce you havent mentioned your budget, I will continue to guess everything for you.
Now in order to run battlefield 3 on ultra, you would need something like a gtx670 for around $400..but you can go for a gtx660 ti for around $300 which would run the game at high settings/not ultra
If you like amd, a hd7870 can be found for around $240 and a hd7950 for $300 which would run the game at high-ultra. For the hd7950, I'd recommend you to get the tx650 power supply. For the rest of the graphic cards, a 500w psu would suffice so you can add that money for the graphic card. I am not recommending the hd7970 because you would be better off with the gtx670 if your budget is around that line.