Hi,
Try the following. As you are invalidating the BalloonTip every time you call a new ShowBalloonTip method, the BalloonTipClosed method is getting called without the help of the user. Therefore, by employing a boolean to tell your program when the BalloonTip is being updated, it can distinguish between a user clicking the close button and the routine update of the time. Also, you might want to disable the Timer rather than just changing a flag when the user clicks the close button so that you're not using up memory with a timer not executing any code. Hope this helps 
-----------------------------------------------------------
Public
Class BalloonTipTime
Private
startTime As Date
Private Invalidated As Boolean
Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim timeSpent As TimeSpan = DateTime.Now - startTime
Dim toopTipText As String = timeSpent.Hours & ":" & timeSpent.Minutes & ":" & timeSpent.Seconds
'Let your program know it's about to update the BalloonTip
Invalidated =
True
NotifyIcon1.ShowBalloonTip(500,
"Yout Status", toopTipText, ToolTipIcon.None)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
startTime = DateTime.Now
End Sub
Private Sub NotifyIcon1_BalloonTipClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles NotifyIcon1.BalloonTipClosed
If Invalid = False Then 'This method wasn't called by updating the BalloonTip
Timer1.Enabled = False
End If
Invalid =
False 'Finished updating the BalloonTip
End Sub
End
Class
For more information ,check this
http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=281450&SiteID=1
With Regards