Developer's introduction:
Both TypeScript and Dart "compile" into Javascript. On the client, they both run as Javascript, on existing browsers as-is, without any changes or plug-ins.
The differences being, TypeScript is built on top of Javascript (like CoffeeScript). Last years' Javascript is still valid TypeScript. Dart is a fresh language, which compiles into valid and optimised Javascript. (but expect a VM on Google's browsers, at least).
If you've developed any large Javascript based application, then either language is a welcome change. For me, it's the static types (type safety, declared types) so the IDE no longer has to guess the type of a variable.
If you already have a Javascript code base, TypeScript is better for gradual migration. If you're coming from "real" languages and Javascript has put you off web-development, Dart is less of an arse-ache.
Initially, IDE support will be more widespread for TypeScript (since it's Javascript with extra bits). IDE support for Dart is better (by design), but not as common (you'll probably have to get rid of your VS comfort blanket).
If you want an analogy:
For the old: Javascript is assembly, TypeScript is assembly with macros. Dart is C++.
For the young: Javascript is C, TypeScript is C++, Dart is C#.
The rest: Moped, motorbike, car.
Killer features:
TypeScript is Javascript with extras. Might be a bad thing - but your existing code and libraries can still be used.
Dart produces optimised Javascript, tree shaking (dead code removal), and doesn't require jQuery.