for counter,ijpair in enumerate(itertools.product(enumerate(items),enumerate(other))):
i,j = ijpair
//... do stuff
As Codemonkey points out, we're not increasing readability here, and for the explicit use stated, it's not really an improvement. However, the enumerate and itertools.product expressions are all generators/iterators, so they can be passed to other functions like map to be used there. So you could filter for wherever the item and otheritem were the same value:
allelements = itertools.product(items, others)
sameys = itertools.ifilter(lambda a: a[0]==a[1], allelements)
And now sameys has exactly the same structure as allelements. The point is that the whole iterable set becomes an iterator expression, rather than being a loop construct, which can be more easily passed around.