You should be able to link them as long as they use the same object file format and target the same machine instruction set. For example, say you have two C compilers each with it's own proprietary language extensions. You compile two different files, one with compiler A the other with compiler B. Each source file uses language extensions of it's respective compiler. As long as both compilers are set to target the same platform and architecture, for example i386 instruction set on Linux, then you should be able to link the files into one executable.
See this list of object file formats on wiki.
This might also be of interest to you:
UNIX tools for exploring object files
EDIT
According to this article, "C++ Standard Library ABI", there is an industry standard C++ ABI and you should be able to link objects files of any compiler which conforms to this standard. You can see that standard here:
Itanium C++ ABI
This document was developed jointly by
an informal industry coalition
consisting of (in alphabetical order)
CodeSourcery, Compaq, EDG, HP, IBM,
Intel, Red Hat, and SGI...
In this document, we specify the
Application Binary Interface for C++
programs, that is, the object code
interfaces between user C++ code and
the implementation-provided system and
libraries. This includes the memory
layout for C++ data objects, including
both predefined and user-defined data
types, as well as internal compiler
generated objects such as virtual
tables. It also includes function
calling interfaces, exception handling
interfaces, global naming, and various
object code conventions.
So as long as you target the same instruction set, object file format and use the standard C++ ABI ( which is now the default in gcc / g++ ) you should be ok, assuming of course that the standard C++ ABI is actually standard and properly implemented by most modern C++ compilers that run on Linux ( which seems to be the platform you're targeting ).
EDIT 2
You should take a look at this SO post:
GCC vs MS C++ compiler for maintaining API backwards binary compatibility
It seems like Microsoft doesn't follow any consistent standard ( Itanium or otherwise ) regarding their C++ ABI, so if you compile with gcc for Windows it likely is going to be a problem.
You probably also want to look at these two articles:
Policies/Binary Compatibility Issues With C++
Some thoughts on binary compatibility
You could restrict your users to compilers which support the Itanium ABI, but that depends on your target audience.