I get this question all the time and the easiest answer would be that it depends on the time closest to when your contract runs out.
Newcomers to the mobile market such as ZTE, Archos, Oppo, Huawei and Lenovo tend to launch their products at the Consumer Electronics Show (CES) held in Las Vegas every January because they cannot compete with the others. The big manufacturers (Sony, HTC, LG, Nokia) launch tend to announce their flagships at the Mobile World Congress (MWC) held in Barcelona every February but in the case of Samsung they host their very own event a month after.
So for example this year expect Samsung to announce the Galaxy S5 at their standalone event in March with a view to worldwide release in April. Which brings us to the elephant in the room, the iPhone, they tend to announce/launch their phones in September at their standalone event the Worldwide developer conference(WWDC). A new trend has also developed where manufacturers tend to launch "Phablets" (devices such as the Galaxy Note series with screens over 5.5in) and tablets at the IFA Consumer electronics show held in Berlin every September.
So with all that in mind if you want the latest android/windows flagship, upgrade your phone between April and July, if it is the iPhone you are interested in then wait until the WWDC when the latest iteration is announced. The same goes for phablets and tablets, upgrading from October onwards is your best option.
I hope this explanation helps 8-)