Low poly to high poly instancing Is there a way to connect a low poly object with a high poly object linked from another blend file, that is only interchanged on rendering?

Example:
In the viewport I have my low_cube.001. It is connected somehow to high_cube.001 in the high_cube.blend. In the viewport there will always be low_cube.001. On rendering the scene with Cycles, there should be high_cube.001 only.

Is there an "artists" way?
If not, is there a way I can interchange objects with Python, somehow transfer the high poly object into the render engine?

EDIT:
Regarding Python, I don't need a finished piece of code completely worked out, just some directions or ideas would be great alreay!
A method often used for rigged characters is to setup two groups, one containing the low-res objects and another containing the hi-res objects.

When linking a model from another blend file you select the group and Dupli-Group will be used, with a simple switch between low and hi res being made in the Duplication settings of the object properties. This method can swap the many related objects belonging to a group all in one go.



You could setup a pre and post render handler to swap these groups automatically.

bpy.context.object.dupli_group = bpy.data.groups["quadbot_bridge_lo"]
bpy.context.object.dupli_group = bpy.data.groups["quadbot_bridge_hi"]


To experiment and learn how this works you could try the CGCookie FlexRig which uses this technique. This was also used in Sintel and Tears of Steal if you have a copy of those data files.