Отмена исполнения clearTimeout
Функция setTimeout возвращает числовой идентификатор таймера timerId, который можно использовать для отмены действия.
var timerId = setTimeout(...);
clearTimeout(timerId);
---
Другими словами: когда нажимаете на кнопку - создаёте таймаут и запоминаете его код, а когда повторно нажимаете - сначала отменяете таймаут, идентификатор которого запоминали ранее, а уже потом создаёте новый таймаут.