Google Search, unlike the rest of the Google services, saves the setting to a client-side cookie, rather than a server-side profile. Every time the cookie gets deleted, your search preferences will be reset. This is done to allow the owner of the PC to determine search behavior (such as "safe search" options etc.) regardless of who's using the browser.
You might have a setting in your browser that cleans up cookies upon browser closing, or else, you may have a cleaning or privacy software (i.e. CCleaner) running regularly and removing your cookies.
My recommendation: either stop cleaning the cookies, or save the Google search cookie (it's a text file) and restore it every time you open your browser.