PostgreSQL doesn't directly support XML, but that support can be added "after the fact" with a bit of Perl or PHP. This is clumsy compared to MS-SQL, but it works.
I can't think of any way to approximate a sql-2000 table valued function in PostgeSQL. That doesn't mean there is no way to do it, just that I can't think of one.
PostgreSQL does support stored procedures, at least in a fashion. As the support varies a great deal from one version to the next, I'll let you read up on what your version supports. As a side note, since the changes are significant from version to version, that kind of implies that you want to implement the newest possible version when you "go live", then delay upgrades for as long as you can (until the new features offered outweigh the work needed to get to the point that you can use those features).
PostgreSQL supports SQL. It doesn't really have what I consider a "local programming language" like T-SQL or PL/SQL, even though it has come a long way from where it was. This isn't as big a problem as it might seem, since you can easily wrap a bit of Perl, PHP, or Python around the PostgreSQL and have a full-blooded scripting/programming language that will beat the pants off of the best programming language(s) offered by DBMS engines.
Almost any ETL package offers features similar to DTS. They aren't always as convenient and never as well integrated into the SQL engine, but they will do the job. This is part of the price you pay for vendor independance, and while conversion projects can kill you, that price is often very acceptable for new development.