It is certainly never a "fire and forget" project.
Facebook is constantly rolling out new features, deprecating existing features, and changing workflow of many key platform concepts.
I would say apps "break" every 2-3 months though there is really no predictability to when they roll out changes. For some applications, Facebook's changes have no immediate effect on the application but create opportunities to extend existing functionality. Sometimes the break only compromises part of a back-end process and won't have an immediate effect on the user. Sometimes, however, the application can become entirely inaccessible or key functions can stop working.
As for preventative measures, your best bet is to keep up to date on Facebook platform announcements, which are released on the Developer application message board. Usually changes are announced a good 30-60 days ahead of time, and usually rumored even earlier. Once they make the changes, Facebook also usually preserves support for any deprecated functions for a month to allow everyone time to make the changes, test, troubleshoot, etc. So really, in the end, by the time your app would "break" you will have more than enough time to accommodate.
My advice would be to charge on a per-update basis as needed. As a developer, you should keep up on the announcements just to stay savvy. I personally let all of my clients know when Facebook announces changes, so that they are aware ahead of time of any work needed, and will generally include my quote to make the necessary changes to their applications. If the client doesn't take action by the time the changes are rolled out, I'll send out a reminder. That way, by the time the app actually "breaks", there's been ample warning.