I understand this as:
1. Take a point in time over some very long time period.
2. For that point, take the time difference between the last and the next blocks created (unless the randomly selected point in time is exactly a block creation time, in which case pick again)
3. If you repeat 1 and 2 some large number of times and take the average time between blocks, it will be about 2 minutes.
This has to be wrong, so have I just totally misunderstood you?
You've understood correctly, but it isn't wrong.

For (2), if you happen to pick exactly a block creation time, use the time between that block and the one before it. No need to disregard your selection.
Let's make it even simpler:
1. Pick 10k random numbers between 0 and 10k. Sort them in order.
2. Pick random numbers in the same range. Find where they fit in the sorted list above. Find the size of the gap they fit into.
3. Average those gap sizes.
4. Get 2.00
Astonishing, isn't it? 10k points in a 10k range are an average of 1 unit apart from each other. But randomly pick points in that range and find that the average size of the gaps you land in is actually 2!
Some code:
#!/usr/bin/env python
import random
points = range = 10000
samples = 1000000
list = []
def randomPoint(): return random.random() * range
def findPoint(point):
last = 0
for i in list:
if i > point: return last, i
last = i
return last, range
i = 0
while i < points:
list.append(randomPoint())
i += 1
list.sort()
i = 0
sum = 0
while i < samples:
i += 1
point = randomPoint()
start, end = findPoint(point)
sum += end - start
if i % 1000 == 0:
print "%d : point %.2f is between %.2f and %.2f, gap = %.2f, average gap = %.2f" % (i, point, start, end, end - start, sum / i)
Some results:
$ ~/Source/Python/randompoints.py
1000 : point 2387.45 is between 2385.66 and 2390.78, gap = 5.12, average gap = 1.99
2000 : point 5960.24 is between 5959.33 and 5963.06, gap = 3.73, average gap = 2.00
3000 : point 7200.27 is between 7199.62 and 7200.60, gap = 0.98, average gap = 1.99
4000 : point 928.07 is between 926.96 and 928.65, gap = 1.68, average gap = 1.99
5000 : point 6716.98 is between 6716.89 and 6717.06, gap = 0.17, average gap = 1.98
6000 : point 6888.10 is between 6887.06 and 6890.42, gap = 3.36, average gap = 1.98
7000 : point 3816.51 is between 3816.14 and 3816.89, gap = 0.75, average gap = 1.99
8000 : point 7514.49 is between 7513.71 and 7514.87, gap = 1.15, average gap = 1.99
9000 : point 5838.96 is between 5837.04 and 5840.15, gap = 3.11, average gap = 2.00
10000 : point 2998.62 is between 2997.48 and 2999.81, gap = 2.33, average gap = 2.00
11000 : point 9116.49 is between 9115.60 and 9117.87, gap = 2.27, average gap = 2.00
12000 : point 5445.59 is between 5445.08 and 5445.95, gap = 0.87, average gap = 2.00
[...]
See how in the results we are tending to find the bigger gaps (5.12, 3.73, ...) and not the smaller ones. It's because the smaller ones are smaller, and so less likely to be randomly picked.