Well, not quite. (I misread your post to start with.)
The result is a real reference - but it doesn't refer to your original variable. It refers to an object on the heap which contains a copy of the value your variable held when boxing occurred. In particular, changing the value of your variable doesn't change the value in the box:
int i = 10;
object o = i;
i = 11;
Console.WriteLine(o); // Prints 10, not 11
C# doesn't let you have direct access to the value inside the box - you can only get it by unboxing and taking a copy. C++/CLI, on the other hand, allows the value inside the box to be accessed separately, and even changed. (You can still potentially change the value in a box with C# - for example if the value type implements some interface and the interface methods mutate the value.)
Often the reference type which causes boxing is "object" but it could be some interface the value type implements, or just System.ValueType
.