If you think about it correctly, the answer to SO 1267126 can be applied to your problem.
Each of the marked date errors that you have in the group is displayed for the same week. Therefore, by definition, each of these error dates should also appear at the same start of the week. Thus, you start the calculation of the โbeginning of the week from a given dateโ in the dates of the error report, and also calculate the number of weeks and group both (modestly terrible) expressions and finally get the answer you are looking for.
SELECT DATEPART(wk, DATEADD(day, 0, DATEDIFF(d, 0, bg_reported_date))) [week], DATEADD(dd, -(DATEPART(dw, bg_reported_date)-1), bg_reported_date) AS [weekstart], bg_status, st_name AS [status], COUNT(*) AS [count] FROM bugs INNER JOIN statuses ON bg_status = st_id GROUP BY DATEPART(wk, DATEADD(day, 0, DATEDIFF(day, 0, bg_reported_date))), DATEADD(dd, -(DATEPART(dw, bg_reported_date)-1), bg_reported_date), bg_status, st_name ORDER BY [week], bg_status
Since bg_reported_date is DATETIME (see the comment, it includes a time component), you must specify it in DATE before defining the start of the week (but the expression of the week number is not required, and the "week of the week" at the beginning of the beginning of the week expression is not needed):
SELECT DATEPART(wk, DATEADD(day, 0, DATEDIFF(d, 0, bg_reported_date))) [week], DATEADD(dd, -(DATEPART(dw, bg_reported_date)-1), CAST(bg_reported_date AS DATE)) AS [weekstart], bg_status, st_name AS [status], COUNT(*) AS [count] FROM bugs INNER JOIN statuses ON bg_status = st_id GROUP BY DATEPART(wk, DATEADD(day, 0, DATEDIFF(day, 0, bg_reported_date))), DATEADD(dd, -(DATEPART(dw, bg_reported_date)-1), CAST(bg_reported_date AS DATE), bg_status, st_name ORDER BY [week], bg_status
NB: unconfirmed code!