Another thing to look at is a clustered index on the table.
If there is one, SQL Server will be physically rearranging the data to match the index. Consider dropping the clustered index and recreating it after the delete finishes. Also, you may gain some speed by wrapping the DELETE in a TRANsaction.
Also, if the delete WHERE clause would effect the majority of the rows in a table, it MIGHT be more efficient to INSERT the remaining rows into a new table, then drop the original and rename the new table. Remember to recreate any Indexes, triggers, constraints etc to match the original.