I have my preferences set to the default "write to disk at most every 60 seconds". However, that isn't correctly followed if more than one workunit is running at a time (for example, non-CPU-intensive projects, or multi-core machines).
Here's a piece of my log:
19/07/2007 15:37:23|DepSpid|[checkpoint_debug] result spider_79786_0 checkpointed
19/07/2007 15:37:29|DepSpid|[checkpoint_debug] result spider_79785_0 checkpointed
19/07/2007 15:38:01|DepSpid|[checkpoint_debug] result spider_79784_0 checkpointed
19/07/2007 15:38:38|DepSpid|[checkpoint_debug] result spider_79786_0 checkpointed
19/07/2007 15:38:39|DepSpid|[checkpoint_debug] result spider_79785_0 checkpointed
19/07/2007 15:39:10|DepSpid|[checkpoint_debug] result spider_79784_0 checkpointed
19/07/2007 15:39:44|climateprediction.net|[checkpoint_debug] result hadcm3inct_cmqc_1920_160_05864501_1 checkpointed
19/07/2007 15:39:46|DepSpid|[checkpoint_debug] result spider_79786_0 checkpointed
19/07/2007 15:40:54|DepSpid|[checkpoint_debug] result spider_79786_0 checkpointed
That's two checkpoints a minute instead of one. Note the end of the log: there were three checkpoints within a minute. It would be better if BOINC made all the running apps checkpoint at the same time. Of course that can't be guaranteed if the app doesn't call boinc_time_to_checkpoint often enough, but at least there should be only one timer.
(I'm not sure if the checkpoint time handling is done on the API or on the core client - change component if needed)