Well, Cegaton already found the problem, but the question needs an answer for future users.
Subdivision surface modifier has two important parameters: the
view and the
render subdivisions. As their name suggests,
view determines how smoothed out the surface will be when viewing it in the viewport, and
render does the same for rendered images.
This is useful if you want a smoother object when rendering, but want a better performance of the viewport and don't need much detail when previewing – you can set a lower
view and a higher
If you set the
render parameter lower than the
view parameter, objects will appear smoother in the viewport than in actual renders.
Another possible cause of this problem is that the modifier is visible but isn't being rendered . In that case, click the camera icon to enable rendering of the modifier (in the image above, both rendering and viewing are enabled).