You must understand the difference between a DateTime's year and its week year.
In Joda-Time, in accordance with the ISO 8601 standard, Monday is the first day of the week. Yet years do not always start on a Monday.
The first week of a year, still according to the ISO standard, is the week that contains the first Thursday of that year.
As a consequence certain days of a year may fall into a week of the previous or the next year.
In your example 01/01/2012 is in fact such a day. It belongs to week 52 of 2011. So its year (2012) is different from its week year (2011).
Consequently, if you change the date to the first week of its week year, you'll get a DateTime in the first week of 2011.
To make this work consistently you simply have to make sure your week year is the same as your year :
DateTime onTheFirstDayOfTheFirstWeek = dateTime.withWeekyear(dateTime.getYear()).withWeekOfWeekyear(1).withDayOfWeek(1);
BTW the workaround in your comment will not work consistently, specifically it will fail when the system time falls in a day that has a year different from it's week year.