As a young designer I did several projects for a local non-profit whose mission was to convey anti-drug and alcohol message to schools. I created many posters and brochures for the organization at the time. The organization is not longer around, but I gained a great deal of real-world experience from the donation and the work was easily more memorable than many other projects I did at the time. I should note that I sought out the ability to donate, I didn't respond to any advertisement. Just my opinion, but I think this is a huge factor in a good relationship with the charity. Many legitimately in need charities wouldn't know where to start with advertising for design services volunteer. They simply know they need brochures, or a web site, or some other material.
A few ways I've found are to find a large human services or non-profit organization and, while you often can't donate at a national or international level, you can donate work on a local level. Most of these organizations are very happy to talk with you about how you can assist them locally.
A few places to look to help:
http://www.redcross.org/ (disaster relief)
Many places are set up for simple financial donations since this is easiest for most donors. However, if you contact a local or regional office you can often speak to someone about donating your services.
One great place to check is Grassroots.org. Grassroots specifically tries to match charities in need of specific services with those that can provide those services.
I, personally, try and avoid religion-based non-profit organizations for my own reasons, but that's an alternative if you care to go that way.
One thing to keep in mind, although you may be donating your services, you need to treat any project as a paying project with deadlines, scope definitions, and a pseudo budget to track. Otherwise things can get out of control rather quickly.