bot87,
1. Скажите, вы так отступы сами ставите или поломалось при копировании? Все глаза сломал, блин.
2. Дело не в addEventListener. Дело в том, что clearTimeout в качестве параметра принимает не handler, а номер, который возвращается функцией setTimeout при установке таймера. Надо как-то так:
<head>
  <style type="text/css">
    div {
      width:  100px;
      height: 100px;
      border: 1px solid red;
    }
  </style>
</head>
<body>
  <div id="block"></div>
  <script>
    var id; // Завели глобальную переменную
    block = document.getElementById('block')
    handler = function(){
      id = setTimeout( /*получили номерок*/
        function(){
          block.style.backgroundColor='red'
        },
        2000
      )
    }
    handler2 = function(){clearTimeout(id)} //использовали номерок
    
    block.addEventListener('mouseover', handler, false)
    block.addEventListener('mouseout', handler2, false)
  </script>
</body>