Your best bet at telling which trains will likely have extra rooms available for on-board upgrades is to look for trains that are still selling sleepers at lower prices as the date gets closer.
Of course, if you're booking a train and a sleeper is selling at low bucket, you might as well book it, as the on-board upgrade price is the same as the low-bucket advance booking price, especially as booking the sleeper in advance also automatically makes your rail fare sell for low bucket (even if coach is otherwise selling for a higher bucket).
But what you're looking for is whether that train is selling rooms at high bucket (which means the sleepers are almost sold out). If they're not, there will likely be some rooms available, and if the rooms are being sold at a middle bucket, you can potentially save money by upgrading on-board (as, again, they're then sold at low bucket). Typically, you can find the low-bucket sleeper charge by doing a fake booking for your route 325 days out (unless 325 days out falls in one of Amtrak's peak periods, like the Thanksgiving weekend--they don't always sell rooms at low bucket even with 0 bookings during these periods). However, it's hard to tell exactly what high bucket is, as you can't just pick a random date and know that the train has exactly one room left (whereas 325 days before departure, it's almost guaranteed that there are very few bookings for the train, and hence, tickets and accomodations are being sold at low bucket).
Otherwise, you can try calling and asking how many rooms they have left on a given train.
As far as the best time, I'm not sure--if you see him on the platform while boarding, you might mention it then, otherwise, I would do it maybe when he comes by to collect your ticket. Obviously, the sooner the better, as there might be other people who would beat you to it.
Try to catch him when he's not too busy with other things or in a grumpy mood, as he might just decide to say no because it's too much work for him at that moment. If something like this happens, you might try checking with the other conductor (there is usually a conductor and assistant conductor on each train, and one might be more friendly than the other). You could also ask your car attendant or the LSA to ask the conductor for you--he would know an appropriate time to talk to the conductor.