Correct behaviour for 'Login as user' when user cannot access CP?
You're correct... it should be sending to postLoginRedirect, but there is actually a bug where after impersonating:

// Get the current user
$currentUser = craft()-&gt;userSession-&gt;getUser();


is returning a cached copy of the previous user (who had CP access).

Will get that fixed for the next release.

Update:

Fixed for the next post 2.2.2596 release!