<p>Let's say I wanted to have an application that could easily switch the DB at the back-end.<br>
I'm mostly thinking of SQL Server as the primary back-end, but with the flexibility to go another DB engine.  Firebird and PostGreSQL seem to have (from my brief wikipedia excursion) the most in common w/ SQL Server (plus they are free).</p>

<p>How similar would the DB setup, access, queries, etc.. be for Firebird, PostGreSQL and MS SQL Server?</p>

Unfortunately, SQL varies widely across providers. It's almost impossible to write all but the most trivial SQL to run on a number of RDBMS - and then you're into lowest common denominator territory. Far better to use an abstraction layer to handle at least the connection to the database (inc. access, sending queries), and either an ORM to handle the SQL itself or per-provider SQL.
If you want to look into how they vary - good examples are auto-incrementing ids and obtaining the ID of the last inserted record.