Rather than go over the major porting issues here, I'll point people to the excellent porting document put together by Benjamin Kosnik and the GCC team located at http://gcc.gnu.org/gcc-4.3/porting_to.h
One recent development was the revert of a patch that made redefinitions errors. With this patch, whose intent was to make the C++ frontend and the preprocessor's pedantic warnings consistent, something like this would cause an error:
$ cat test.cpp
#define foo bar
#define foo baz
$ g++ -c test.cpp
test.cpp:2:1: error: "foo" redefined
test.cpp:1:1: error: this is the location of the previous definition
The problem is many many packages have code like this in their configure scripts. Whether this is a problem in autoconf, or lazy programming, or just the compiler being completely anal (which many have suggested), it's still a hell of lot of packages to fix. A conversation on the gcc-dev mailing list resulted in a compromise where a new system of pendantic warnings/errors was agreed upon. However, being too close to the release of 4.3 to make major changes, it was decided to integrate it into 4.4 and revert the original patch for 4.3.
So most of what remains is missing header fixes and the odd -std=99 inline error. Unfortunately there's still a lot of them.
Interested parties can follow along on bug #198121. If you want to file bugs please include (a) patches (b) the error message (c) a link to the upstream bug (if there is none, file one ;]) or cvs checkin if they've already fixed it (in which case we probably will just wait till they release rather than patch our version).