The following function and idle timer will force evil back into
normal state in all buffers after an idle delay of 30 seconds
(which you can adjust as you like):
(defun evil-normalize-all-buffers ()
"Force a drop to normal state."
(unless (eq evil-state 'normal)
(dolist (buffer (buffer-list))
(set-buffer buffer)
(unless (or (minibufferp)
(eq evil-state 'emacs))
(evil-force-normal-state)))
(message "Dropped back to normal state in all buffers")))
(defvar evil-normal-timer
(run-with-idle-timer 30 t #'evil-normalize-all-buffers)
"Drop back to normal state after idle for 30 seconds.")