2 different approaches:
- Add a trigger (For Delete) to gather the name of the logged-in user: suser_sname() or the running app. You will need to create a table to store this information (commonly known as an Audit table).
- Use the Profiler to watch all traffic on the database.
The trigger approach is better and you can even block/reject/abort delete commands on a per-table basis.