Is the MDF file used by another process? (http://ccollomb.free.fr/unlocker/)
Did you try to attach the database? The .mdf file type is different than the .bak one, thus attaching might work instead of restoring.
I believe this may fix the problem.
The service account for sqlexpress does not have access/permission. Use Configuration Mgr to change the startup account to LocalSystem (if your database and backup file are on the local machine) or a domain user account that has permission to disk resources (locally and remotely).
The way to change that is to open the config manager, like oj said, and then to go to the services section and right click on SQL Server (the one that's running currently on your machine) and go to properties. In there is the configuration for the "Log on as" user.
Running as a User can create problem sometimes (security reasons) because user account may have more previledges then the SQL Server account through whihc SQL Service is running. Here is the fix for this issue.
You can specify a location into the file system where 'Everyone' have full access to write or give write permission to the SQL Server user into the file system. After finish this file/folder permission step, restart the restore process you will able to restore your database.