Almost for sure cursors are a performace hog if you use them in a trigger. We replaced one and reduced the time to insert 40,000 records from 40+ minutes to around 40 secs. Triggers are often written without really thinking through the database implications (for instance in our case, the web programmers wrote the trigger never realizing there were people who might insert 40,000 records at once) and then left in place for years without review.
Email notifications in a trigger are usually a bad idea (do you really want to hold a lock onthe table while the app creates and sends an email? better to send to a table and have a job that runs every five minutes or so).
Going to a new version is a perfect time to refactor.
If you have that many triggers, you may be doing auditing. Consider if there are newer, better ways in SQL Server 2008 to do that or if what you have right now is sufficient. Another cool thing is you can create triggers now that will audit who made schema changes. If you are heavy into auditing, this too might be something you want to implement.
"NOTHING is more important in a database than integrity." ESquared