Derek Featherstone (@feather on Twitter) is an internationally-known authority on accessibility and web development, and listening to him speak you really get the feeling that there aren't many people who know this field as well as he does.
An engaging speaker, he opened up the eyes of his audience to the many considerations that must be taken when creating a truly accessible website. One thing that hit home immediately is Derek's abhorrence of the common CSS reset style: "a { outline-style: none; }". Many of us designers use this CSS rule to eliminate the ugly borders around clicked images in Firefox, without realizing that it greatly hampers accessibility. Users who must use keyboards to navigate sites can no longer tell where focus is, and therefore the site becomes immediately and completely unusable to them. Other important things I took away from Derek's presentation:
Think of Ajax like a dumb waiter: You know those things they have in old houses that send food up and down from the kitchen? Well, you wouldn't serve a banquet through one of those, right? This is a great way to think of Ajax. Need to make a request for a small percentage of changes to the site? Ajax is your answer. Changing a large portion? A page reload might not hurt.
Make the mental model match the process: This one is important, but also hard to explain in a blog post. Basically what it boils down to is exactly what it says. Make your app behave as in the same way you think. If a path through your app has to be re-ordered in order to match the mental model, so be it.
Iconography should be on the content level: Iconography is part of content, not style, and therefore should be in the content level of your site, not a css background image.
Pay attention to source order: The order your elements are in the source is the order a screen reader will read them out in. Make sure this is the order you want.
Retain focus: Retain keyboard focus when using ajax to retrieve things, or put the focus where it should be, like inside the lightbox you just opened.
Tabindex is important: Assign tabindexes to the elements in your form. Let the source order determine the tab index for your forms, but assign a -1 tabindex to something that you want to give keyboard focus to programmatically.
Test correction paths: Don't just test validation failing and succeeding, test correction paths as well. Sometimes these paths are the most important, and yet most often overlooked.
Derek's final point was that accessibility should be thought of throughout your entire project's workflow, and not just a rubber stamp at the end of the project. This is especially important when Flash apps are introduced to the mix, as it's almost impossible to make a Flash app fully accessible once it's already been developed.
Overall, Derek made a fantastic and eye opening presentation. I'll see if I can get his permission to re-publish his slides here, as there is an abundance of points that I can't touch on in a singular blog post.