So what you want is a deep copy of the list -- where the 2nd list contains copies of the elements of the 1st list. In that case, when an element of any list changes, the other list remains unchanged.
How to do that, depends on whether the elements of your list are reference types or value types. A value type list can be easily cloned like so:
List<int> deepCopy = new List<int>(originalList);
For a reference type list, you can use serialization, like so:
public List<MyObject> DeepCopy()
{
MemoryStream ms = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(ms, this);
ms.Position = 0;
return (List<MyObject>) bf.Deserialize(ms);
}