The logic behind only allowing pending (pay later) contributions to be created from online contribution pages is that typically, those using the contribution pages are most likely doing so online, not real time, hence if the pay later option is selected, it means that payment will be sent as opposed to handed over to someone.
You say that your volunteer then needs to go into the contribution record and update the contribution status, so this means that they have access to the back office - why not instruct them to submit a new membership directly from the back office with a status of completed?
If you wish to associate these contributions with a contribution page, you can use the "Update Multiple Contributions" action (or batch update contributions via profile if you are on an earlier version of Civi) to associate the contributions with the relevant contribution page (you would need to create a contribution update profile and add the "Contribution Page ID" field in order to be able to do this - I like making a copy of the reserved "Contribution Batch Entry" profile as it contains the most commonly used fields for contributions, but regardless of how many fields you have in the profile, the batch update window will only show the first 10 fields, so you will need to be sure that the "Contribution Page ID" field is moved up to be one of the first 10 fields in the profile - you can read more about profiles here: https://docs.civicrm.org/user/en/4.6/contributions/manual-entry-of-contributions/#configuring-profiles-for-batch-entry-of-contribution-membership-and-pledge-payments)
Hope this helps!
Tamar