I got this idea that towns are large places, so it would make sense if they had a school where you could learn smithing. So why not add an option after begging, crafting, and recruiting called Study Up on Crafting for 10 gold an hour (or however much seems fair) on top of the town's visiting fee. This would have a drop down menu like crafting where you can select which item you want to improve your smithing skill in. Then for each hour you study, you earn progress into gaining another smithing skill in that item. I was thinking the hours required for each progressing point in smithing should be somewhat linear, so the formula could look like:
study hours needed to next smithing level = 10(x+1)
where x is your current smithing level in that item
You could even keep the current smithing system in place for a random chance to gain (or lose depending on if you actually use the gear you're smithing in).
Comments please. Preferrably by somebody on the dev team.
EDIT: Just realized that 10^(1 + x/10) gets high faster than I originally thought and a linear function would actually work better here than an exponential one