(whitespace-turn-on-if-enabled) gets called multiple times by hooks when a file is opened. The value of font-lock-keywords is changed by the first call, and subsequent calls record that value into whitespace-font-lock-keywords. When GWM is disabled, the value restored to font-lock-keywords still includes highlighting for white space characters.

How's this change?

*** whitespace.el.orig    Thu May 16 15:22:05 2013
--- whitespace.el    Thu May 16 15:22:59 2013
*************** resultant list will be returned."
*** 2176,2183 ****
    (add-hook 'write-file-functions 'whitespace-write-file-hook nil t)
    ;; create whitespace local buffer environment
    (set (make-local-variable 'whitespace-font-lock-mode) nil)
!   (set (make-local-variable 'whitespace-font-lock) nil)
!   (set (make-local-variable 'whitespace-font-lock-keywords) nil)
    (set (make-local-variable 'whitespace-display-table) nil)
    (set (make-local-variable 'whitespace-display-table-was-local) nil)
    (set (make-local-variable 'whitespace-active-style)
--- 2176,2184 ----
    (add-hook 'write-file-functions 'whitespace-write-file-hook nil t)
    ;; create whitespace local buffer environment
    (set (make-local-variable 'whitespace-font-lock-mode) nil)
!   (unless whitespace-font-lock
!     (set (make-local-variable 'whitespace-font-lock) nil)
!     (set (make-local-variable 'whitespace-font-lock-keywords) nil))
    (set (make-local-variable 'whitespace-display-table) nil)
    (set (make-local-variable 'whitespace-display-table-was-local) nil)
    (set (make-local-variable 'whitespace-active-style)


Regards,
Jeremy Moore