Da es kein Zeiger ist kannst du es auch nicht auf einen Null-Zeiger testen.
Ein Iterator ist eben ein Iterator.
In C++ gibt es keine allgemeine Möglichkeit einen Iterator auf Gültigkeit zu prüfen.
Wenn du etwas brauchst was explizit "NULL" gesetzt werden kann, und wenn es nicht NULL ist einen Iterator halten, dann nimm boost::optional<std::list<Vector2D>::iterator>.
Und wenn es dir nur auf das "assert" ankommt, dann schmeiss das assert() einfach raus, und verwende eine STL Implementierung mit "iterator debugging". Die vom MSVC 2005 kann das z.B.
Die Iteratoren checken dann automatisch intern ob sie gültig sind, bei jedem Zugriff. Macht allerdings auch nur zu Debugging-Zwecken Sinn, man sollte NIE Code schreiben der sich darauf verlässt. (Unabhängig davon ob man die Checks dann im Release-Mode drinnen lässt oder nicht)