One additional way I've seen this happen is when you have pages using workflow, check in/out or just the haven't saved the page yet. Meaning the page doesn't exist, and when saving the widget it tries to reload it...
In the controller of your page make sure you check these when retrieving the page:
.LatestVersion(boolValue)
.Published(!boolValue)
As a reference if you have the sample sites setup these are also used. Published is for live site, LatestVersion is usually in editor mode.