Summary and Conclusion
The inherent inaccessibility
Despite their usefulness and well deserved place in HTML, tables are not very easy to understand, especially when accessed through a non-visual user agent. The larger the table, the greater is the risk for resulting in a table which cannot easily be understood or made use of. The biggest reason for table inaccessibility results from its design, where related information resides in separate cells, sometimes many spaces away. Tables are also, from an authoring perspective, sometimes difficult to grasp. There are usually more than one way to present the information, and this in ways which affect the accessibility and usability. This altered behavior may be difficult to realize or identify. More often than not, the ability to successfully use information presented in a table format depends heavily on the user's previous experience with tabular data.
I would be as bold as to say that tables are generally not accessible unless we specifically design them to be. Luckily, as my overview has shown, the tools have been given us. We just need to make use of them.
How to make your tables accessible
One often overlooked aspect is how the table itself is used. As an author, you should consider whether the table is best suited as the main source of information, or whether it is better suited as a supplementary (and perhaps, optional) information source for the data you are trying to present. You should always consider using a textual representation which presents key facets of the tabular data in a paragraph form. Do not assume that your visitors will be able to decipher the table the way you consider given. Sometimes it may be advisable to highlight specific key points from the table, perhaps even providing ways for the user to navigate to those sections of the table. This is especially true when dealing with reports which display anomalies. These anomalies may otherwise be difficult to find and identify without prior familiarity with the data itself.
Take some time to learn how to use all the table elements and their respective attributes properly. Become familiar with how different user agents treat these elements and attributes. Test on platforms and using user agents your audience are likely to use. While this may seem like a daunting task, do not forget to rely on third part sources. Many different organizations and associations for people with various impairments are usually open to assisting you in making Internet more accessible for their particular needs. A single session with a blind or physically impaired person will forever change the way you view accessibility and usability. For large and public sites, such knowledge and testing by the audience most affected by malformed design is priceless.
More than anything, follow the suggestions set forth in the Web Content Accessibility Guidelines (WCAG) [w3.org] for tables. Lacking user agent support is no excuse for insufficient coding of your tables. Hopefully browser support will continue to improve, and certain attributes and elements which may now have dismal support will begin to find its way into more and more user agents. If an element or attribute by definition will make your tables more usable and accessible -- implement it. Implement as much as you can, while still avoiding breakage in non-conforming agents.
For now, I thank you for your time and attention. It has been a pleasure to discover accessible tables with you.