(Sorry I haven't yet had time to read other responses: am on the road and buried under both 6 inches of Ohio snow and an end month deadline. So apologies if I'm restating other people.)
I'm both.
Development uses images which are primed to check that the system is up to date (and to correct that as appropriate) on startup. That way we get rapid startup but everything compiled up to date.
Occasionally it doesn't look too good (say, an annoying number of GF signatures changed since the image was saved) and the effort of hand-holding the start-time system reload outweighs the effort of rebuilding. Then I quit and rebuild. Mostly when I rebuild I don't force the compile, but if (say) I've been messing with a pervasive macro I'll go all the way.
We've recently introduced the change that force compilation does a force compile of the whole system twice. This allows us to generate warnings on incorrect calls to functions defined later in the system. We aim for the compilation to be warning-free.
The product we ship can't do the above (LispWorks "delivered" image: royalty free but no compile-file) but then we wouldn't want to. The applications come with a patch loader (startup check for fasls in a particular directory).
In case this is a relevant data point: we're developing three applications, 70k lines of code, with a shared library of about 15k lines.
- nick