Just to recap: with pass-through queries you are passing the sql directly to the server. Thus, not only do you have to use the flavor of sql of your server (Oracle, SQL Server, etc), but you also cannot use the contents of form fields because the server has no access to those forms.
The solution I used was to change the definition of the query each time the form fields changed. The code looks like this:
Private Sub Combo1_AfterUpdate()
Dim strSQL as string
Set db = Currentdb
strSQL = "SELECT * from SQLserverTable WHERE criteria = '" & [Forms]![Form1].[Combo1] & "';"
db.Querydefs("SamplePassThrough").SQL = strSQL
Man, you wouldn't think such a short bit of code would hang me up so long. From what I understand, I can further speed up the code using ODBC direct and skipping the CurrentDB call - but no need to be greedy. I'm happy cutting this 2 minute 8 second query to 1 second (that's right, a single second to run a query that was taking over 2 minutes!).