See the question and my original answer on StackOverflow

I'm not familiar with the limits of the ListView on the compact framework, but on the standard framework, you can use the TreeNode.StateImageIndex property. The unchecked/checked states are in fact using small images embedded in the standard winforms code (If I remember correctly, they are index 1 and 2). So, for example, if you do this:

private void lvMeters_ItemCheck(object sender, ItemCheckEventArgs e)
    e.Item.StateImageIndex = 3;

It will change the small icon and set it to nothing. You can also use the ListView ImageList.