Además de todas las otras buenas respuestas aquí, permítanme agregar que no hay ninguna garantía de que una llamada a Thread.Abort realmente abortará el hilo en cuestión, nunca. Es posible (aunque no particularmente fácil) "endurecer" un hilo contra el aborto. Si, por ejemplo, está abortando un hilo porque cree que está ejecutando un código hostil, entonces el código hostil podría resistir su propia destrucción.
Si tiene una operación de larga ejecución que involucra un código que usted no posee y que debe eliminarse limpiamente, la forma correcta de hacerlo es poner ese código en su propio proceso , no en su propio hilo.(Y preferiblemente en un dominio de aplicación altamente restringido de seguridad en ese proceso). Luego puede eliminar el proceso limpiamente.
En resumen, Thread.Abort es, en el mejor de los casos, indicativo de un mal diseño, posiblemente poco fiable y extremadamente peligroso. Debe evitarse a toda costa; el único momento en el que deberías considerar abortar un hilo es mediante un código de "apagado de emergencia" en el que intentas derribar un dominio de aplicación lo más limpiamente posible.
Hay muchos hilos en SO: http://www.google.com/search?q=thread.abort()+site%3Astackoverflow.com – Groo