OK here we go:)
you can't rely on IPS\Member::loggedIn()->timezone being valid and usable inside new \DateTimeZone()
So before you pass it, making sure that it's valid should fix the bug which people are facing.
if( \IPS\Member::loggedIn()->timezone and \in_array( \IPS\Member::loggedIn()->timezone, \IPS\DateTime::getTimezoneIdentifiers() )
..