Globally providing title attribute to links
A lot of links end up going through theme_link() at some point (even those that go through the l() function by default); so providing a preprocess function for that theme, that adds a title to any link that doesn't already have one, would be a very good start:

function MYTHEME_preprocess_link(&amp;$vars) {
  // If there is already a title set, and it's not empty, we don't need to continue.
  if (isset($vars['options']['attributes']['title']) &amp;&amp; !empty($vars['options']['attributes']['title'])) {
    return;
  }

  // Otherwise we use the link text as the title.
  $vars['options']['attributes']['title'] = strip_tags($vars['text']);
}


This won't catch links that are outputted directly in HTML, or don't go through l()/theme_link(), but I think you'll struggle to intercept those anyway (it would require some DOM parsing or ugly regex).