There is no 100% accurate way to do this since your speed depends on many factors. You can do some kind of periodic speedtest to measure speed at some point in time, and make crons to run it when you want.

First you need to know that the server you are downloading data from can actually send it at the speed greater (or equal) then the speed you expect (you pay for). Second you need to know that there is no congested link between your ISP and the server, or it will affect your test. You cannot know this, but picking a server that is physically closer to you is preferred. Since you are paying for access speed to your ISPs network, they can not be responsible for congestion happening somewhere else on the internet. Also if you don't have some monitoring software that will show all bandwidth used by all hosts on your network, you should have no other activity on your link beside the test data transfer at that time. You can download any file, i usually download some linux .iso from a server that is close to my location. Monitoring software can display your used throughput at some time but this is not necessarily your maximum available throughput at that time (for the reasons mentioned above).

To be honest i don't see a very good reason for you to do this, it will render your connection virtually unusable at the test periods and i don't think you will get anywhere with your ISP. This looks like simple congestion and not something that is deliberate, and they will probably tell you that they cannot guarantee the maximum bandwidth (unless you have that kind of contract). Also, if they assume no one will use much bandwidth at work hours, i don't see what would they gain by capping it.