Hey Stu,
Why are you pulling 3Mb of data from SQL? Get a Web Service and filter the data server side. Don't pull 3Mb in. It's not a best practice.
Now, if you really need the data, make sure your view isn't trying to show it all - that will create massive performance problems for browser forms. Just hide some of the stuff and that should make your form better.
InfoPath Form Services (browser support) is a 1.0 product. They have improve performance remarkably in the latest Service Pack. You should look for that. If you already have that, look at SharePoint 2010 (in technical preview now) and see if that makes your job simpler.
Hope this helps a tad,