When I rediscovered my love for civilian flight simulators, I was pretty torn between two products that ran on all the platforms I use (Mac, Windows, and Linux): FlightGear and X-Plane. FlightGear has the advantage of being free and open source. X-Plane was known for being an excellent commercial product, albeit somewhat pricey at $80 (at a time). Now, in general, I love open source software but I'm not an open source bigot -- I use what works best for me within my budget. If that happens to be open source, then great. If it's a commercial package that fits within my budget, I'll go that way. However, what made things much more interesting in this situation is that X-Plane 9 is currently available for $30. While $80 was a little hard for me to justify, being the cheap bastard that I am, $30 was something I was willing to consider.
So anyway, I downloaded the free X-Plane demo to give it a whirl. While the demo limits you to 10 minutes of flight time around the Innsbruck, Austria airport, it did give me a decent idea as to how the simulator looks and feels. For as fair a comparison as possible, I also loaded up FlightGear at the same airport with the same aircraft, the Cessna 172 Skyhawk.
X-Plane, on the other hand, uses the 2D panel as the canonical view and its 2D panels are aircraft-specific, accurate (to the best of my knowledge), and beautifully designed. Some aircraft do have 3D panels and they do look pretty good (better than FlightGear's, actually), but not all do. In addition, the 3D panels are so zoomed in that they aren't particularly useful to control the aircraft from.
Based on these comparisons, I'll give X-Plane the slight nod in the cockpit department.
FlightGear 1.9-2.2 had completely broken AI ATC and ATIS, although ATIS is fixed in the upcoming 2.4 release and is working in the 2.3 preview releases. FlightGear's ATIS implementation uses what sounds like a custom voice synthesizer to read out its notifications and it works okay, except the volume is too low relative to the other ambient noises and I have yet to figure out how to turn it up. I also can't figure out how to turn off the COM radio after hearing the ATIS message so I don't hear it looping incessantly.
X-Plane, on the other hand, has a fully functional and more robust ATIS/AI ATC implementation -- including full tower communications. On the Mac, it sounds like it uses OS X's built in voice synthesis libraries to provide the voice of ATC, but I'm not sure what it uses on other platforms. One other slight difference is that you don't need to tune the COM radio to the tower or ATIS frequencies -- a pop-up menu provides options on what you can say to ATC. Personally, I prefer having to manually tune the radios, but this is a nit. Still, I think X-Plane does have the better AI ATC and ATIS implementation.
X-Plane makes the claim that it has the most accurate FDM by using blade-element theory to model aircraft characteristics. This is a geometric model that was developed in the 1800's to model propeller behavior. Since I'm not an aeronautical engineer, I dont know if it applies to airfoils in general or if it's really only useful for propellers.
FlightGear actually supports multiple FDMs. One of them, YASim, is a geometric FDM similar in concept to X-Plane's. However, the most commonly used one is JSBSim, a look-up table based model developed by a NASA engineer along with many others in academia.
Again, since I'm not an aeronautical engineer, I can't really judge the pros and cons of the different FDMs used here. While some may say that a geometric model is inherently superior because it is tied directly to the geometry of the aircraft, there is also the issue about the precision of said geometry -- if the theory is applied to the actual visual model used by the simulator, the polygon count may not be high enough to accurately model the aircraft. On the flip side, the quality of a look-up table based FDM depends on the quality of the generated look-up table and the number of parameters it contains. In theory, you can model a 747 to fly like a Cessna 172 if you apply the 172's look-up table to the 747's visual model. However, given the people who work on FlightGear's FDMs, I can only assume that the core FDM engines are sound and will properly handle their respective parameters, provided that the airplane modelers also provide correct data to the FDMs.
In short, I consider the FDM debate a draw between these two simulators, given my lack of expertise in the area.
FlightGear includes joystick configuration definitions in XML files with the package. If a configuration exists for your joystick, it pretty much will "just work." However, if it doesn't, you'll need to hack together your own custom XML file. While I personally don't find this too daunting, I'm a computer software engineer by trade. Someone without as much computer experience may find it nigh impossible. Even with my experience, however, I still find the idea of having to hand-hack an XML file to work with my joystick tedious. However, if you are so inclined, these XML files have tremendous flexibility. You can include snippets of code in FlightGear's built-in scripting language, NASAL, in the XML files to program your joystick's buttons to do all sorts of interesting things. It also allows for you to chord joystick buttons to give you near limitless flexibility in configuring your joystick.
X-Plane, on the other hand, doesn't have any pre-configured joystick definitions -- you'll have to go to a dialog box and map all your buttons and axes manually using a "press the button then click on the behavior" model. It also doesn't allow you to chord buttons, so you're stuck with the exact number of buttons on your stick as opposed to multiples of them based on how complicated your chording gets.
I therefore view joystick support as a draw. FlightGear is simpler if you have a pre-defined joystick and are willing to use the defaults, but it's much more complicated if your joystick is not defined. X-Plane is much simpler to configure for any arbitrary joystick, but it lacks FlightGear's near infinite joystick configuration flexibility.
FlightGear in general has better multi monitor support as it allows you to put a window containing a different view of your plane on your second monitor. X-Plane only allows you to span your current view across your monitors (which all must run at the same resolution).
FlightGear also has the ability to automatically download scenery as you travel to a particular area as opposed to X-Plane's requirement that you pre-install scenery you care about to your hard drive. It also has more scenery overall than X-Plane as it includes the extreme north and south, which X-Plane doesn't. However, FlightGear's auto-download facility is a little flaky -- if the connection to the server is slow you may not see scenery for the area you're flying over and instead be stuck with only water.
FlightGear has a very large supply of free aircraft models to download. X-Plane has a mix of payware aircraft in addition to what looks to be a decent free model community.
X-Plane allows you to fly on Mars. FlightGear limits you to Earth.
X-Plane lets you change planes without restarting the simulator. FlightGear requires a restart whenever you change planes.
X-Plane includes a proper aircraft GPS unit in its aircraft. FlightGear has more limited GPS support.
Documentation seems to be about equally spotty for both, but both do seem to have decent communities and documentation wikis to help out.
X-Plane includes a bunch of tools for designing aircraft, scenery, etc., in the package. FlightGear requires you to download separate tools from different developers to do so, although it supports quite a few standard formats.
X-Plane, with the proper additional hardware and a commercial use license can be used for FAA flight training. I don't believe FlightGear has been approved for the same training.