It costs $300 at a dealer because of $100 for oil, $20 filter, and about an hour of labour + whatever else.. My local dealer charges labour at $200 per hour.
Its possible to get it done at an independant for less, but you need to watch out they are using fully synthetic (BMW approved LL01) oil, and a genuine BMW oil filter.
As for timing, I think 12months is pretty ideal, as long as your km is not crazy high. 19,000km is a bit long in my opinion.