Keep in mind (periodic) garbage-collection and reference-counting are two different mechanisms. In your case, ref-counting is the relevant one.
Objects whose ref-count becomes zero get deallocated immediately (no need to wait for the periodic gc to run).
[as @delnan pointed out, ref-counting is not an official python "feature", but rather an implementation detail of CPython specifically. Nevertheless, it is worth knowing about]
In your case, You get two concurrent existing objects. This is the order things happen:
a new object is created, and is referenced by name "var"
[you now have one existing object]
while True:
a new object is created
[you now have two existing objects]
it is referenced by name "var" (refcount += 1)
old object is no longer referenced by name "var" (refcount -= 1)
old object's refcount is now 0, it gets deallocated
[you now have one existing object]
If you want only one concurrent object to exist, you can add del var
as the first line in your loop.