Проверьте методы Listview.Items.Remove и Listview.Items.Insert:
listView1.Items.Remove(selectedItem);
listView1.Items.Insert(newIndex, selectedItem);
Работа с изменяющимся индексом (когда вы удаляете ListViewItem, индексы элементов списка, которые идут после выбранного элемента, все изменяются на один), могут быть болезненными. Кроме того, вам нужно будет управлять тем, что происходит, когда вы продвигаете или понижаете предмет за верхнюю или нижнюю границы индексов предмета.
Надеюсь, что вы начали.