Is it on a particular user's computer?
I've never had the buttons stop working, but I wonder - are you fiddling with form internals (extracting, recompacting etc). I could imagine that a button might get 'recreated' with a different internal ID, and then any code behind the button might no longer work as it's expecting to be called from the old button ID.
But if it's all rules, I would think Infopath is clever enough to retain that information - but maybe not. This is just an idea/possibility?