Alex,
Dale's suggestion would work for you, although you'd be trading having update userids in a script with having to manage alternate versions of a view for what sounds like a single field, which may be overkill for what you are trying to do. Personally, I think the use of a script would be your cleanest option. Ultimately, if you went that route but wanted to avoid updating that script every time users move, you would have to have some sort of information specific to a user that you would have to query to determine if that contact should have access to that field.
You mention that you don't use teams, however you could use departments or really any userinfo fields to make that determination. There are a number of unused fields under the "Custom" tab of a user profile which could be used to hold a value determining if that user should be able to see your custom Opportunity field. If, for example, you used the Text 1 field on that custom tab, you would just need to query the USERTEXT1 field in the Userprofile table where UserID = CurrentUserID whenever navigating to a new opportunity record.
Jason