Some shifting is to be expected. Contours steer between cells using interpolation. Thus, when you compare contours based on the original data to contours based on data resampled to a larger cellsize, you are comparing interpolated values (from the original data) to values that have been *twice* interpolated (first to go to the larger cellsize, then to interpolate among the largers cells). Typical errors will be a fraction of the new cellsize, but sometimes you can lose local extremes of the data during the double interpolation, causing some contours to vanish or to shift by many cells.
Cell registration is another common cause of shifting: during the resampling process, make sure to use the same extent origin as the original grid. This shift will be relatively small, however, because it cannot exceed the original cellsize. It can, however, be a systematic shift such as the one you describe, so perhaps misregistration is the culprit in your case.
I still recommend using Spatial Analyst rather than some tool, because you can control and understand what SA is doing. There is no inherent limitation with cell sizes. For example, if you want to resample from 2 meters to 9.5 meters, you could first resample from 2 meter to 0.5 meters, then perform a 19X aggregation. However, I doubt you need such fine control, since your purpose is aesthetic, not analytical: the results of resampling to 8 meters or 10 meters (4X and 5X aggregation) won't be much different.