Okay, I tried both of those tricks, the label1.invalidate and the thread.threading.sleep() (one at a time). I also played with the label1.show().

The code still executes the same way: A long pause, and then the last text shown. I'm starting to think that I'll have to have the user step through the code using multiple "next" buttons, which would be much less elegant.

Any other suggestions or thoughts on this?

Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = "One"
        'Label1.Invalidate()
        Threading.Thread.Sleep(1000)
        'Label1.Show()
        Label1.Text = "two"
        'Label1.Invalidate()
        Threading.Thread.Sleep(1000)
        'Label1.Show()
        Label1.Text = "three"
        'Label1.Invalidate()
        Threading.Thread.Sleep(1000)
        'Label1.Show()
        Label1.Text = "Four"
        'Label1.Invalidate()
        'Label1.Show()
        'Threading.Thread.Sleep(1000)
        'Label1.Show()
        'Label1.Text = "Five"
        'Label1.Show()
    End Sub