How many rows are you deleting?
Maybe there is a locking problem- is some other process holding many locks on the table?
If you're going to regularly delete a large number of rows from a table, consider loading the data you want to keep into another table, then renaming that new table instead.
Another option would be to drop the indexes before the delete, then recreate them after it.
Deleting a lot of rows could be quite slow because it needs to reorganise all the indexes. However, it still shouldn't take half a day 🙂
Mark