Make Armour User and Shield User go all the way up to Legendary from sparring and one doesn't have to worry about relying on real battle to get your weapon skills up. Reaching Legendary+5 in Armour User or Shield User would require actual combat experience, though.
Also: Record combat experience and training experience as two separate variables, and determine overall skill level from their sum, and cap training experience to some value. This way any experience gained in actual combat before hitting the training cap isn't wasted. Putting the cap for training with lethal weapons higher than the cap for nonlethal weapons might also be useful if training weapons ever get implemented. I am also in favour of increasing the length of archery ranges required to reach certain levels of crossbow skill, as you can only get so good shooting at something ten yards away from you. Obviously a dwarf should not bother training if he can't get any skill increases given his current weapon setup, unless there's someone who can and there are no other available training partners. Oh, and while I'm at it, Marksdwarves who have run out of training ammunition or can't path to a useful archery range should spar to build up their Hammerdwarf, Armour User and Shield User skills.
Proposed caps:
Wrestler: 10,999 (1 point short of Great)
Weapon User, all except ranged weapons: nonlethal: 4499 (1 point short of Talented), lethal: 10,999
Armour User and Shield User: nonlethal: 10,999, lethal: 19,999 (1 point short of Legendary+1)
Marksdwarf: 3-5 tile range: 1,799, 6-11 tile range: 4,499, 12-23 tile range: 10,999, 24+ tile range: 17,999 (1 point short of Legendary)