David, as Eric pointed out you aren't setting the timestamp in the image. After creating a ROS Image with cv_bridge, you still need to fill the Image header, like "new_msg->header = msg->header;". image_view works because it doesn't do any synchronization.

image_proc makes some effort to detect communication issues; unfortunately unsynchronized image and camera info topics aren't one of them yet. I've opened ticket #3966.

On Wed, 2010-04-07 at 15:51 -0700, David Feil-Seifer wrote:
The purpose is to make a
rectified image that includes all of the image (including what does
not strictly fit into a square), not just the centermost part.

image_proc can already do this. The projection matrix P controls the scaling of the undistorted image. See cv::getOptimalNewCameraMatrix and cv::initUndistortRectifyMap a couple entries down. The camera_calibration node has a slider you can use during calibration to change the free scaling parameter; you can see an example in the stereo calibration tutorial.

Patrick