Based on the code from Jon (thanks btw) you can take it one step further for complete flexibility:
public static Expression> Cast(Expression> expression)
{
Expression converted = Expression.Convert(expression.Body, typeof(TToProperty));
return Expression.Lambda>(converted, expression.Parameters);
}