What about the paint() method of the Canvas() class?
RIM Device Java Library: Class Canvas)
"The contents of the Canvas are never saved if it is hidden and then is made visible again. Thus, shortly after showNotify() is called, paint() will always be called with a Graphics object whose clip region specifies the entire displayable area of the Canvas."
Couldn't you subclass Canvas(), and in your pass-thru of the paint() method to the parent take the Graphics 'g' object and save that as a JPG file?
(note: not a programmer but a systems guy, so I can read APIs but not bother coding them

)