When using object results, the specified class will only be used if it has been loaded already. If the class is not already in the namespace, stdClass is used. This may be fixed by replacing the code at line 399 (system/libraries/drivers/database/Mysql.php):
$this->return_type = class_exists($type, FALSE) ? $type : 'stdClass';
with:
$this->return_type = $type;
This same change must be made inside the result_array function, and in the other database drivers.
This solution isn't perfect, because there is no check for a loader failure. It may make sense to search for the specified class, load it if found, and change the result type to stdClass if it is not.
This same problem still exists in the development trunk, but line numbers are from the 2.1.1 release.