A few general notes on what needs to be updated. All the dependencies need to be updated. I do have all the dependencies built but they were built with MinGW gcc 4.2. Some .cbp files need updating based on the new dependencies. The .cbp project files for the SDK demos also need updating. Then the biggest hurtle is for the community to decide what todo about MinGW wide string/Unicode support. I already made my decision as to what I am doing but I don't think the rest of the community will follow.
MinGW gcc 3.4.5 or earlier builds do not support unicode, wstring, or wide string stream out of the box, a large amount of the implementation had not been ported from the POSIX code to windows ie using the msvcrt.dll. The headers have the definition and you can get things to compile by defining _GLIBCXX_USE_WCHAR_T (an internal define that the user should not fiddle with
Some links about the MinGW wide character issues:
MinGW Wiki
MinGW user post about using wchar.
At the end of December 2006, I rebuilt MinGW gcc 3.4.5 with libiconv so that I would have basic unicode support for Eihort. This works fine but locale support is very limited. In mid January I changed over to MinGW build of gcc 4.1.1 and then at the end of January migrated to MinGW build of gcc 4.2. Ogre 1.4 will compile and link with gcc 4.1.1, 4.1.2 and 4.2, there is no need to define _GLIBCXX_USE_WCHAR_T. Be warned that the gcc 4.1 debug build of OgreMain (148MB) is about double the size the gcc 3.4.5 (74MB) debug build of OgreMain.
If you decide to use gcc 4.1 with SJSL exceptions, the patch for MinGW g++ 3.4.5 to allow SJSL exceptions to cross dll boundries did not get applied to gcc 4.1 svn so you need to do that otherwise a crash will most likely occur on start up. The crash occurs in OIS when it throws an exception when an input device (in my case a joystick) is not found. If you have a joystick plugged in then you'll get a little farther
Using gcc 4.2 with DWARF2 exception handling instead of SJSL exception handling and building libgcc and libstdc++ as dll's fixes the problem and no patch is required. Search through the MinGW user and dev mailing lists for info on how to do the 4.2 builds. Ogre 1.4 (release build -O2) built with MinGW gcc 4.2 runs about the same speed as a VC8 release build. Ogre 1.4 built with MinGW gcc 3.4.5 (rebuilt with libiconv for basic wstring support) runs about 20% slower than a VC8 build.
Take note that visibility rules changed in gcc 4.0 and higher. In gcc 3.4.5 we didn't have to worry about exporting public names for dlls since they all got exported by default. In gcc 4.0 and higher, the default behaviour is not to export all which means that __declspec(dllexport) for MinGW builds does have to be used so Ogre platform header and the other dll prerequisite headers had to be modified to support this.
If you decide to use MinGW gcc 4.1 or higher with codeblocks, you will get a huge number of warnings about using the deprecated -I- instead of -iquote. Its an easy fix in codeblocks source if you build codeblocks from source.
The two options that I didn't try is putting in an option to not use wide string support in UTFString for a MinGW build or use an external unicode library. Those two options are short term options until a decision is made on how to proceed with proper unicode support for MinGW.
My choice was to go with gcc 4.2 but 4.2 has not been released yet so I will not make an Ogre SDK for it.

