Каждый QtGui.QListWidgetItem(...)
вызов создает новый элемент.В этом коде вы сначала создаете элемент, добавляете его в список ... А затем, если он находится в нечетной позиции, создаете совершенно новый элемент и выбираете его, даже не добавляя его в список.
Вам нужно убедиться, что вы имеете дело только с одним элементом каждый раз: сохраните результат одного вызова QtGui.QListWidgetItem(...)
в переменной, а затем оперируйте им:
for i in range(5):
item = QtGui.QListWidgetItem(str(i))
self.builtinpatternslist.addItem(item)
if i % 2 == 0:
self.builtinpatternslist.setItemSelected(item, True)