<p>Windows NLB works great and removes computer from the cluster when the computer is dead.</p>

<p>But what happens if the application dies but the server still works fine? How have you solved this issue?</p>

<p>Thanks</p>

By not using NLB.
Hardware load balancers often have configurable "probe" functions to determine if a server is responding to requests. This can be by accessing the real application port/URL, or some specific "healthcheck" URL that returns only if the application is healthy.
Other options on these look at the queue/time taken to respond to requests
Cisco put it like this:
The Cisco CSM continually monitors server and application availability
  using a variety of probes, in-band
  health monitoring, return code
  checking, and the Dynamic Feedback
  Protocol (DFP). When a real server or
  gateway failure occurs, the Cisco CSM
  redirects traffic to a different
  location. Servers are added and
  removed without disrupting
  service—systems easily are scaled up
  or down.
(from here:
http://www.cisco.com/en/US/products/hw/modules/ps2706/products_data_sheet09186a00800887f3.html#wp1002630
)