You need to handle null references and Nullable<T>, so (in turn):
bool canBeNull = !type.IsValueType || (Nullable.GetUnderlyingType(type) != null);
Note that IsByRef is something different, that allows you to choose between int and ref int / out int.