shirt laying on the child's lap or table, and positioned like it would be on their body. practicing with a different shirt on the table gives the child more room to see the buttons and how their hands are working than if they are buttoning on their body.
then, practice with an over-shirt, with the shirt on their body.
iron the button and hole edges of the shirt for a stiffer material to work with.
practice with a jacket that is made with a thicker material, like corduroy.
for younger kids (age 3) you can snip the button hole just a little to make buttoning easier.
work on the fine motor skills needed to button 