This looks great, Nick. I think it will help a lot of people out. I'm going to play around with it later, but I noticed that it's not very Option Strict On friendly.

Lines 27 and 47 is not allowed late binding with option strict on. GetMemberInfo doesn't have an 'As' clause, line 89 says, "Option Strict On disallows implicit conversions from 'System.Linq.Expressions.Expression' to 'System.Linq.Expressions.MemberExpression'.", GetPropertyInfo also doesn't have an 'As' clause, and line 98 is also disallowed because of late binding.