A casting exception isn't easily explained by a problem with the default directory of a program. Which is about all that ought to be different when you run your app from the VB6 IDE rather than directly.
You'll have to use a debugger to find out what's going wrong. Luckily that's easy when you use VB6. Start by opening your .NET project in Visual Studio. Project + Properties, Debug tab. Select "Start external program", click the button with the dots and navigate to vb6.exe. It should be located in c:\program files\microsoft visual studio\vb98\vb6.exe if you used the default install options.
You can set the "Command line options" setting to the path to your .vbp project so the IDE automatically loads it. Not strictly necessary.
Debug + Exceptions, check the "Common Language Runtime Exception" Thrown check box. Press F5 to start the debugger. The VB6 IDE will now open, load your VB6 project if necessary. Run the project and recreate the failure case. That should cause a breakpoint in the Visual Studio debugger. You may have to switch to it by hand, the taskbar button should be blinking. Use the normal debugging tools to find out why the exception was thrown.
Note that you can also set breakpoints in Visual Studio, useful if you need to single-step through the code to find out what's wrong. When you press F5, the breakpoint indicator turns hollow since the DLL isn't loaded yet. As soon as your VB6 project creates a class object from your .NET code, the DLL will be loaded (visible in the Output window) and the breakpoint indicator will turn solid. If that doesn't happen then you may need to run Regasm.exe with the /codebase option so that the DLL in the project's bin\Debug folder gets registered as the COM server.