Hi Rokhi,
How about this! Try putting a hidden field in your form. Have it hold current date. Then have that field stored in a table so that it gets it's value from the table. It may be that the table is there just for that hidden field and only has one record. Then there is the token for that field going into a table, ie. through completion event that does the insert when form is sumitted. You will also use sql in the advanced field options for hidden field to fill the hidden field with the date value from the table. This will be done upon opening the form. You will now also need some custom javascript in the form to check if the date value in the hidden field is equal to this year. That means form has already been submitted this year. If it is then disable the submit button and a message that says something like: 'form not available for submission until next year' is displayed. If you do your sql right then when the year value in the table is less than current date year value the javascript won't hide the submit button or display the message and someone can submit the form.
You can use firebug to inspect the form element for the submit button and will get something like this:
[L]Submit If the above was the submit button ID then you will want to look how to disable that form element id with with a phrase of disabled="true" within the element tag which should work ( if syntax is right) because form load event has already instantiated the submit button with code as displayed. You will just be stepping on that code with an updated version.
Thanks and good luck!