Like I said, just because you can only get an instance initially through some other class is no reason to restrict access to the type itself. If the user wants to access multiple members of an instance they shouldn't have to access them all via some property, e.g.
VB Code:
  1. Dim ut As New UnrestrictedType
  2.  
  3. ut.RestrictedType.Property1 = value1
  4. ut.RestrictedType.Property2 = value2
They should be able to assign the value of the property to a local variable and then access its properties directly, e.g.
VB Code:
  1. Dim ut As New UnrestrictedType
  2. Dim rt As RestrictedType = ut.RestrictedType
  3.  
  4. rt.Property1 = value1
  5. rt.Property2 = value2
To prevent that would be poor form and I doubt that it's even possible.