http://harleyhacking.blogspot.com/2010/01/lf25-03a.html
Read the other posts for history and other info. Not public domain or GPL, (at least not yet) but free for educational or personal use.
SD or SDHC. Runs near theoretical maximum speed (class 2 @ 2Mb/S, class6 @ 6Mb/sec). Still being adjusted. Might not work with MMC cards (without restoring the slow clock until SD detected). Tested with 512M 1.0 through 16Mb SDHC 2.0 - most in between. Just under 2k (could be trimmed but be slow and even less compatible).
FAT32 only, but fairly complete (Open/Create/mkdir/chdir/delete/optional extended partitions/read/write/seek/truncate - no rmdir (it could but no verification for empty directory) - see fat32.h and sdhc.h and main.c demo). Library is about 10K with everything, less if you only need to write, uses under 100 bytes of ram for state, just over 512 bytes for sector buffer. You can zap the filesystem with the wrong calls so beware. FAT32 demo also runs under linux for testing (e.g. "sudo testfat /dev/sdc").
Written in C.
Runs on the OpenLog from sparkfun or any arduino or AVR with the SPI attached (ss# to cs#, mosi/miso/sck to the respective SD pins). Set the F_CPU in the makefile if it isn't 16Mhz (will run proportionately slower at slower clocks).
Still an alpha but generally works. At least until I do something stupid which I don't have an interlock for (like open directory, write...).