Our first objective in providing software training for end-users is minimizing any productivity losses associated with the software transition. This means you have to, as quickly as possible, get them up to the skill level required to do their jobs at least as quickly and accurately as they were doing with the old software (or manual methods). Then in the next phase, you want the software to help users do their jobs more quickly, accurately, and/or securely than before.
It's important to be realistic about the timeframes in which you expect to accomplish these objectives. These timeframes will be dependent on the complexity of the new software as well as the number of users who need training and their beginning skill levels. Upgrading to a new version of the same software already being used can present special challenges. Training might be expected to proceed more quickly because users are already familiar with a previous version. However, if there are many changes in the new version or it has a very different interface (such as the "ribbon" in Office 2007 that will replace the menus and toolbars users are familiar with in previous versions), users may actually find an upgrade more difficult than switching to a completely new software package because of their existing expectations.
Remember that all software packages aren't created equal, and neither are all users.