To check if it is properly registered:
As part of creating your COM wrapper you should have generated a .rgs file. If you open that up, one of the very first lines (under HKCR) is the name of your object, something like
ProjectName.ClassNameWrap.1
If you now open the registry editor (regedit.exe), select the HKEY_CLASSES_ROOT branch, then go to Edit - Find and paste that string in (including the .1 on the end), then if your class is properly registered it *should* find it against a ProgID branch under a GUID, something like this:

(The GUID will obviously be the one that appears in your .rgs file, and the name of your class as you pasted it in will appear in the right half of RegEdit's window.)
When you added your override of GetDisplayName(), did you add a specific case for the DISPID_xxx value suggested? Showing us a little snippet of your code where you return this string may help.
Also, make sure your object class (not the wrapper class, the actual object class) overrides the relevant methods to provide the CLSID information - for example:
Acad::ErrorStatus ClassName::subGetClassID(CLSID * pClsid) const
{
CLSID clsid ;
if (SUCCEEDED(CLSIDFromProgID(L"ProjectName.ClassNameWrap", &clsid) ) )
{
*pClsid = clsid;
return Acad::eOk;
}
return (__super::subGetClassID(pClsid) ); // Fall back on the default.
}
(it is actually better to override initCLSID() and make the call to ClassFromProgID() there, and save it as a member variable; the above is for demo purposes only).