For native apps, my biggest single piece of advice is to use the platforms' native UI toolkits. Or use something that wraps those toolkits at a high level, like wxWidgets or Toga (
http://pybee.org/toga/). Be careful with wxWidgets though; some of the widgets are custom, and which ones are native or custom varies by platform.
Non-native toolkits, such as Qt or Kivy, can in principle be accessible, but it takes a lot of work to implement each platform's accessibility APIs, and the toolkits often don't get it quite right. This has been the case with Qt on Windows and Mac. And Qt has zero accessibility on iOS, Android, or for that matter, any platform besides Windows, Mac, and desktop Unix. As far as I can tell, Kivy doesn't have any accessibility either.
As for rich web apps, the relevant standard for accessibility is called ARIA (http://www.w3.org/WAI/intro/aria). It seems to me, though, that robust, working implementations of ARIA are few and far between. The Dojo Toolkit and YUI Library are well-known for iimplementing ARIA across their widget sets. Of course, those aren't exactly the hot JavaScript libraries these days. jQuery UI also has some level of ARIA support. More recently, I've worked with WinJS (https://github.com/winjs/winjs), and from what I've seen so far, it has pretty good ARIA suppport. I don't know what to tell you, though, if you want to use something more mainstream like Ember, Angular, or Backbone with a smattering of jQuery plugins. I'm afraid I don't have the expertise to offer good advice for developing accessible rich web apps.