In Blender Internal there is Z Offset setting for Z-transparent materials, which put one object over another on shader level only. But what about Cycles, how to do it w/o compositor?
Blender Internal and Cycles use completely different methods of rendering the scene - BI draws each face in turn (after optionally eliminating any ‘backfaces’), using a Z-buffer to determine whether each face should appear infront of whatever has already been painted in that place. It is this Z-buffer that is overridden by the Z Offset.
Cycles, however, traces each ray from the camera to the surface. When it hits a surface, Blender determines what would be contributing to the illumination of that point on the surface. Unless the surface is transparent it will not even consider any faces behind that point - so it is not possible to have a material with a property where it will overlay any material infront.
The only way of achieving this in cycles would be via the compositor.