If I am reading this correctly, it sounds like you have 2000+ Leads within a program. Most of those Leads do not have a status of "Registered" or "Attended", but some do. You would like to delete all Leads from the system entirely if they do not have one of the aforementioned statuses. That right?
If so, run a smart list based on progression status. Filter out those who have a progression status of "Attended" or "Registered", then delete the rest of the Leads from the system. When you import the list back in, the Leads you wanted to keep will have the right status and the rest of the Leads will have the default status, which in your instance sounds like "Invited."
The filter you will need is "Not Progression Status was Changed". Reference the program, then you will need to add the constraint "New Value" and enter "Attended" and "Registered". Make sure to change the timeframe so that the length of the Program is included in the smart list. The remaining Leads should be the ones you are looking to delete.
Hope that helps!