I've had extensive experience using this development model: ACCESS 2003 front-end --> SQL 2005 back-end.
It actually performs very well if both sides are done properly.
Unless you did something really REALLY bad in SQL, it's likely a front-end issue.
You did say you had set-up indexes in SQL over the primary search fields.
In your ACCESS app, are you coding full %LIKE% queries, or LIKE% (starts with), or searching by the full fields contents?
Are you connecting to tables using ODBC, OLE DB, or Pass-Thru queries?
Do you implicitly load FORM's initial recordset during LOAD event, or do you put empty FORM then prompt for search values / issue the query?
Big difference here, depending on back-end data and other network considerations.