Windows XP で試してみた。
urllib2.AbstractHTTPHandler.do_open の下の方の r.recv = r.read が原因らしい。
循環参照問題が起こっているらしいので f.fp._sock.recv = None を入れるか
gc を使えば CLOSE_WAIT は残らなくなった。

(urllib.urlopen の戻り値 == urllib.addurlinfo,
urllib.addurlinfo.fp == socket._fileobject,
socket._fileobject._sock == httplib.HTTPRequest)

from urllib2 import urlopen
import gc
url = "http://www.yahoo.co.jp/";
for i in range(3):
  f = urlopen(url)
  #f.fp._sock.recv = None
  f.close()
gc.collect()
raw_input("...")