There are now at least 4 great ways to build a gcc cross compiler for Windows and Playstation.
Use djgpp This is the compiler you already have. But you could add the bits that Sony left out like the C++ compiler. This is your only choice if you're running DOS or Windows 3.1
Use cygwin32 Build the modified cygnus source package. Cygwin32 is a project to port gnu tools to NT and Win95 using a unix emulation layer. You have to get the source as one package and it's 230Mb. I built the compiler chain in July when I didn't know what I was doing (still don't really) and it was pretty straightforward but the makefile kept stopping with errors, fortunately after enough had been built. Unfortunately cygnus have now slapped a restrictive license on it which means that if you were building the compiler today you wouldn't be able to distribute it, or rather a needed dll since it competes with cygnus's MIPS compiler
Use mingw32Build a patched gnu package. This is a new free project which doesnt need the dll, just a few header files and the standard gcc and binutils source distributions.
Use Visual C++ Build the gnu package as it stands for target i486-*-winnt3.5. This is my next project. There is a simple (documented) way, but I'm going to configure the compiler for this target then convert all the makefiles into visual c projects. I'll report back when I manage something. You know this has to be the best way (except when someone upgrades the compiler. Doh!)

Which Target?

There are two trains of thought on this. Jon Rocatis built his amiga tools targeted at mips-unknown-ecoff with all the default options. I tried this with the cygnus toolchain and the finished compiler works but you need to use some funny options. When you build the compiler, you also (try to) build libgcc which you dont need. You have to make the psx linker link little endian objects using gcc and ld with the -EL flag. Also I have to specify a start symbol to the linker using -e _start.

Perhaps a better way (as yet untested) is to use the playstation gcc patch which defines a mips-sony-psx target. You use gnu patch (part of the cywin32 binary distribution) to apply the patch (really meant for linux) to the distribution or you can look at the patch file and do the editing yourself. There is also a debugger patch; the debugger protocol strings are quite a revelation!

There's a cross-gcc mailing list (archives here). There is also an interesting cross-gcc FAQ which has pointers to patches for a cross compiler.

Using C++

libps doesn't support C++. libgcc does. If you use the c++ compiler you've just built, you need to write functions for __builtin_new, __builtin_delete, __builtin_vec_new and __builtin_vec_delete so new and delete will work. There is an example file here.

You might also have to add code to the start and end of main() to call global constructors. There is an example file here, all this stuff suggested by libgcc so you can sort it out if it doesn't work.