How fast can you write to SD with Auduino?

I have been struggling to get the Arduino to write to SD faster than about 2.5Kbyte/s continuously. As I need to write at about 20Kbyte/s this has been quite frustrating.
As the Auduino is able to write this data faster than this to PWM I/O pins the problem in the writing to card.
I am using the Arduino Duemilane with the seeed studio SD shield and the “FileLogger” library (nanofat.cpp ect)
Most of my testing uses a 512byte buffer.
Using MMC+ card has a small improvement.
Using a larger buffer (1024) has very little improvement and any larger is impractical.
I suspect the problem lays in the limitation of the nanofat.cpp code causing one have to 'appended' data and thus located File Start and last cluster on every 512byte write. I have attempted to get around this buy editing the nanofat.cpp code but due to my lack of understating in this area have not had any success.

I suspect that uAlFAT-SD OEM board would overcome this problem as it has a full FAT drivers (and so work with cards>2GB) and is not limited to only the SPI interface, but it seems a bit too daunting to attempt to get this to work considering my limited experience.

I had not seen any posts of people have written to SD at this speed before was wounding had successes in doing so and how they did it; Or know of any reason for a speed of 20Kbyte/s not practically obtainable; Or even a thread that I have missed.

Thanks.