I probably wouldn't recommend setting all properties to a fixed value other than null... Particularly as it may be naive to assume that all of your properties are happy with that default state and even more so, that users of your class would most likely be expecting null (or more precisely default(T)) in place of an unknown value.
Just as a suggestion, if this is for the sakes of displaying the "?" in a UI when the specific values are not yet known then perhaps you could make use of the appropriate binding classes within the framework.
For example, winforms Binding class has "NullValue" property that will be passed to the bound control's property when the datasource has null or DbNull.Value in it.
But if you really want to go down the path that you've asked for then, as suggested above, the Type.GetProperties() should do the trick. Make sure you consider cases of inherited, abstract, overridden or virtual properties and whether setting the default value is appropriate - particularly in light of the fact that the norm is set/leave a value to null/default(T) when you don't actually have a known value.