Any card should be good. Just assess your needs. 4 gb should be fine and can hold about 300 raw+jpeg images. If you need more, then get more. Since your asking this question I'm assuming you're not a pro and won't be shooting massive amounts of photos at one time so the 16gb will be a bit excessive unless you never want to upload your photos onto a computer. The 40d doesn't write fast enough to take advantage of umda cards or whatever highspeed cards so the extra $$ won't matter for those. Some good brands are kingston, san disk, and lexar.