• I have had this sort of scenario before and found that because I could not attach the database I could not run commands such as dbcc checkdb (if you have access to the original machine then you should try running it on that to get the data in a better state before taking a copy of the mdf (and ldf if possible).

    Anyway assuming that you just have an mdf file which you can't attach to your db engine the only useful tool I have found is Recovery for SQL.  Basically you point it at an mdf file and it extracts everything it can find to a load of sql scripts which you can then use to rebuild your data on a blank database.  The only problem I have found with this tool is that at the rebuild stage it wants to run the schema file first which means that the data can't be added back in as it tends to fail the constraints because the tool has no chance of knowing what order it should being adding the data in to satisfy the constraints on the tables. 

    If you find you have this same problem then you may need to create a blank database run the schema script and then remove any constraints it creates. and then recreate the constraints once the data is in place.

    Anyway if your interested the tool is availble from the website below for $499 and it has saved a couple of my clients data who were in the same scenario you described.

    http://www.officerecovery.com/mssql/index.htm

    If anyone knows of other tools like this that they have used successfully then I would like to know about them too (especially if they are free) as you can never have too many recovery tools.