There are a lot of possible answer relating to all types of programming, this is a huge, huge question. So the most useful advice I can give you is one of perspective. When gains dry up from week to week then start thinking like this:
This is what I did leading up to x lbs in the Squat.
So that means this is what I need to do to reach x +10lbs in the Squat.
Start thinking in those terms, it's no longer about inevitable weekly progression. It now becomes about setting up entire weekly and monthly cycles to reach that extra 10lbs.