Yes, you can't change .Checked within the NodeCheck event handler. I tried this with success:

Code:
Private Sub tmrDefer_Timer()
    With tmrDefer
        .Enabled = False
        TreeView1.Nodes(CInt(.Tag)).Checked = False
    End With
End Sub

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
    With Node
        If .Checked Then
            If MsgBox("Do you really want to check:" _
                    & vbNewLine & vbNewLine _
                    & """" & .FullPath & """", vbOKOnly Or vbYesNo) = vbNo Then
                tmrDefer.Tag = CStr(.Index)
                tmrDefer.Enabled = True
            End If
        End If
    End With
End Sub