According to this question it seems like you can do this for Methods. What I want to know is why it doesn't work when I try it with properties.
public class Foo
{
    public virtual object Value
    {
        get;
        set;
    }
}
public class Foo<T> : Foo
{
    public override object Value
    {
        get
        {
            return base.Value;
        }
        set
        {
            base.Value = (T)value; //inject type-checking on sets
        }
    }
    public new T Value
    {
        get { return (T)base.Value; }
        set { base.Value = value; }
    }
}
Error message from C# 4.0 RC1
Error 1 The type 'ClassLibrary1.Foo' already contains a definition for 'Value' ClassLibrary1\Class1.cs 31 22 ClassLibrary1