Having this problem too in v2.0.4. Converted from IPB 4.2 to XF1, and then from XF1 to XF 2.0.4. Whenever anyone tries to login with their old IPB account, this error happens:
- LogicException: Class XF\Authentication\IPBoard40x does not exist
- src/XF/Container.php:267
Stack trace
#0 src/XF/App.php(1312): XF\Container->createObject('XF\\Authenticati...', Array)
#1 src/XF/Container.php(228): XF\App->XF\{closure}('XF\\Authenticati...', Array, Object(XF\Container))
#2 src/XF/App.php(2455): XF\Container->create('auth', 'XF\\Authenticati...', Array)
#3 src/XF/Entity/UserAuth.php(54): XF\App->auth('XF\\Authenticati...', Array)
#4 src/XF/Entity/UserAuth.php(22): XF\Entity\UserAuth->getAuthenticationHandler()
#5 src/XF/Service/User/Login.php(122): XF\Entity\UserAuth->authenticate('aaf98b8bb2eeaba')
#6 src/XF/Pub/Controller/Login.php(83): XF\Service\User\Login->validate('aaf98b8bb2eeaba', NULL)
#7 src/XF/Mvc/Dispatcher.php(249): XF\Pub\Controller\Login->actionLogin(Object(XF\Mvc\ParameterBag))
#8 src/XF/Mvc/Dispatcher.php(88): XF\Mvc\Dispatcher->dispatchClass('XF:Login', 'Login', 'html', Object(XF\Mvc\ParameterBag), '', Object(XF\Pub\Controller\Login), NULL)
#9 src/XF/Mvc/Dispatcher.php(41): XF\Mvc\Dispatcher->dispatchLoop(Object(XF\Mvc\RouteMatch))
#10 src/XF/App.php(1891): XF\Mvc\Dispatcher->run()
#11 src/XF.php(328): XF\App->run()
#12 index.php(13): XF::runApp('XF\\Pub\\App')
#13 {main}
edit: I managed to fix it. In the 
xf_user_authenticate table, I replaced every instance of 
XenForo_Authentication_IPBoard40x in the 
scheme_class column with 
XF:IpsForums4x. Not sure why it hasn't happened automatically during the upgrade/conversion.