Other then what has already been answered, Performance, symantics and completness there is one valid case I have seen for private properties instead of a private field:
public class Item
{
    private Item _parent;
    private List<Item> _children;
    public void Add(Item child)
    {
        if (child._parent != null)
        {
            throw new Exception("Child already has a parent");
        }
        _children.Add(child);
        child._parent=this;
    }
}
Let's say that we don't want to expose Parent for whatever reason, but we might also want to do validation checks. Should a parent be able to be added as a child to one of its children? 
To resolve this you can make this a property and perform a check for circular references.