Personally I'd make a form that allowed the user to change all the items on the report that they are allowed to alter or set. Then using the different states that the user has choosen on that screen, populate a report.
I'd basically have a table to hold all the information that can be set specifically by the user. Create a form that allows them to add/edit this information. Once all the information that is required is entered, then Enable the button used to call up the report.
The actual report you can build all of it that stays the same and place Unbound controls where you want to control the information coming into the form dynamically. Then in the code for the report write your functions that will return the correct information out of the tables. Then in the data field of the Unbound controls simply put '=<Their function name here>' to call the correct information.
I'm not completely sure everything your trying to do, but I would think it would be very hard to make it all work in a single report, without any forms.