There is probably a better way to do this but I use the following:
'THIS DELETES ALL ROWS WHERE THE VALUE IN COLUMN B IS "X"
Dim FoundCell As Range
Application.ScreenUpdating = False
Set FoundCell = Range("B:B").Find(what:="X")
Do Until FoundCell Is Nothing
Set FoundCell = Range("B:B").FindNext
I'm guessing the reason your code is not ending is because as you delete rows where the column N value is null, Excel is just adding additional rows at the end which will also have a null value for column N. I'm actually not sure how my code above will work with a null value, it may behave similarly.