The posting form already does the detection of which category it was called from, actually. It looks at the referer (sic) field and then uses that to automatically select that category.
Given that, I think it would be fairly trivial to do what you describe. In includes/posting.php, at line 370 is a curly brace that closes an if{} block:
368 if ($row["abbr"] == $referrer) {
369 $row["checked"] = 'checked="true"';
370 }
371 $tmpl->setCurrentBlock("category");
372 $tmpl->setVariable(array(
373 "category_name" => FEATURE_MULTIPLE_CATEGORY ? "categories[]" : "categories",
374 "category_type" => FEATURE_MULTIPLE_CATEGORY ? "checkbox" : "radio",
375 "category_value" => $row["abbr"],
376 "checked" => $row["checked"],
377 "label" => $row["category"],
378 ));
379 $tmpl->parseCurrentBlock();
Move this line to *after* what is line 379:
368 if ($row["abbr"] == $referrer) {
369 $row["checked"] = 'checked="true"';
370 $tmpl->setCurrentBlock("category");
371 $tmpl->setVariable(array(
372 "category_name" => FEATURE_MULTIPLE_CATEGORY ? "categories[]" : "categories",
373 "category_type" => FEATURE_MULTIPLE_CATEGORY ? "checkbox" : "radio",
374 "category_value" => $row["abbr"],
375 "checked" => $row["checked"],
376 "label" => $row["category"],
377 ));
378 $tmpl->parseCurrentBlock();
379 }
This will make *only* the category the post form was called from appear, and be checked.
That's the basic change. It will fail if the posting form was called from a non-category page (ie, the home, admin, stats, etc pages), so you'll have to make other changes that depend on how you want to handle it. You can also make the category selection not appear at all (the above makes only the relevant one appear, and it is selected) by modifying templates/post.tmpl at line 47 from:
<input type="{category_type}" name="{category_name}" value="{category_value}" {checked} /> {label}
to
<input type="{category_type}" name="{category_name}" value="{category_value}" {checked} style="display:none"/>
Or something along those lines.
The other aspect of this is the "hidden" categories appearing in the default menu - you will have to change that to a static list that you manage yourself (ie if you add a new category, you have to add it to the menu manually). This is in templates/site.tmpl, you want to remove the line that says {CATEGORIES} and put in the HTML for your specific list of categories in its place.
I hope this is to your point and enough to get you going!