Are you running this outside of arcmap or from the python window? If you are running this in IDLE or something it may not work properly. To make this work, run the script from within arcmap and set the mxd to 'current'. This will give you the ability to refresh what you are actually looking at. The way you were doing it, you were editing the visibility of layers in a copy of the mxd that had been opened in memory by python.
mxd=arcpy.mapping.MapDocument('CURRENT')