If you have implemented the whole example you can change this part of the Compare method:
// Compare the two items
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,
listviewY.SubItems[ColumnToSort].Text);
to something like:
// Compare the two items
compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text,
listviewY.SubItems[ColumnToSort].Text);
if (listviewX.SubItems[ColumnToSort].Text=="")
compareResult = (OrderOfSort == SortOrder.Descending ? -1: 1);
else if (listviewY.SubItems[ColumnToSort].Text=="")
compareResult = (OrderOfSort == SortOrder.Descending ? 1 : -1);
This should override the original result of the comparison.
Watch how you check for empty items, could be null, too or whatever you did before..!