You could also use my uFat library.
It's a kind of halfway-house solution between a full-fat and a fat-free solution. (Sorry couldn't resist it.) Basically you get to read and write sectors within files that you pre-allocate on a PC.
It's a really simple interface. 1. Get the base sector for a named file on the card. 2. Use it!
Naturally there's a couple of minor restrictions, but that's how trade-offs work, right
Read more about uFat here: Arduino Nut: u-Fat filesystem
I'll be happy to help with any queries. PM or mail me.
Charlie